vs-code.md

  1---
  2title: How to Migrate from VS Code to Zed
  3description: "Guide for migrating from VS Code to Zed, including settings and keybindings."
  4---
  5
  6# How to Migrate from VS Code to Zed
  7
  8This guide explains how to move from VS Code to Zed without rebuilding your workflow.
  9
 10It covers which settings import automatically, which shortcuts map cleanly, and which behaviors differ so you can adjust quickly.
 11
 12## Install Zed
 13
 14Zed is available on macOS, Windows, and Linux.
 15
 16For macOS, you can download it from zed.dev/download, or install via Homebrew:
 17`brew install zed-editor/zed/zed`
 18
 19For most Linux users, the easiest way to install Zed is through our installation script:
 20`curl -f https://zed.dev/install.sh | sh`
 21
 22After installation, you can launch Zed from your Applications folder (macOS) or directly from the terminal (Linux) using:
 23`zed .`
 24This opens the current directory in Zed.
 25
 26## Import Settings from VS Code
 27
 28During setup, you have the option to import key settings from VS Code. Zed imports the following settings:
 29
 30### Settings Imported from VS Code
 31
 32The following VS Code settings are automatically imported when you use **Import Settings from VS Code**:
 33
 34**Editor**
 35
 36| VS Code Setting                             | Zed Setting                                    |
 37| ------------------------------------------- | ---------------------------------------------- |
 38| `editor.fontFamily`                         | `buffer_font_family`                           |
 39| `editor.fontSize`                           | `buffer_font_size`                             |
 40| `editor.fontWeight`                         | `buffer_font_weight`                           |
 41| `editor.tabSize`                            | `tab_size`                                     |
 42| `editor.insertSpaces`                       | `hard_tabs` (inverted)                         |
 43| `editor.wordWrap`                           | `soft_wrap`                                    |
 44| `editor.wordWrapColumn`                     | `preferred_line_length`                        |
 45| `editor.cursorStyle`                        | `cursor_shape`                                 |
 46| `editor.cursorBlinking`                     | `cursor_blink`                                 |
 47| `editor.renderLineHighlight`                | `current_line_highlight`                       |
 48| `editor.lineNumbers`                        | `gutter.line_numbers`, `relative_line_numbers` |
 49| `editor.showFoldingControls`                | `gutter.folds`                                 |
 50| `editor.minimap.enabled`                    | `minimap.show`                                 |
 51| `editor.minimap.autohide`                   | `minimap.show`                                 |
 52| `editor.minimap.showSlider`                 | `minimap.thumb`                                |
 53| `editor.minimap.maxColumn`                  | `minimap.max_width_columns`                    |
 54| `editor.stickyScroll.enabled`               | `sticky_scroll.enabled`                        |
 55| `editor.scrollbar.horizontal`               | `scrollbar.axes.horizontal`                    |
 56| `editor.scrollbar.vertical`                 | `scrollbar.axes.vertical`                      |
 57| `editor.mouseWheelScrollSensitivity`        | `scroll_sensitivity`                           |
 58| `editor.fastScrollSensitivity`              | `fast_scroll_sensitivity`                      |
 59| `editor.cursorSurroundingLines`             | `vertical_scroll_margin`                       |
 60| `editor.hover.enabled`                      | `hover_popover_enabled`                        |
 61| `editor.hover.delay`                        | `hover_popover_delay`                          |
 62| `editor.parameterHints.enabled`             | `auto_signature_help`                          |
 63| `editor.multiCursorModifier`                | `multi_cursor_modifier`                        |
 64| `editor.selectionHighlight`                 | `selection_highlight`                          |
 65| `editor.roundedSelection`                   | `rounded_selection`                            |
 66| `editor.find.seedSearchStringFromSelection` | `seed_search_query_from_cursor`                |
 67| `editor.rulers`                             | `wrap_guides`                                  |
 68| `editor.renderWhitespace`                   | `show_whitespaces`                             |
 69| `editor.guides.indentation`                 | `indent_guides.enabled`                        |
 70| `editor.linkedEditing`                      | `linked_edits`                                 |
 71| `editor.autoSurround`                       | `use_auto_surround`                            |
 72| `editor.formatOnSave`                       | `format_on_save`                               |
 73| `editor.formatOnPaste`                      | `auto_indent_on_paste`                         |
 74| `editor.formatOnType`                       | `use_on_type_format`                           |
 75| `editor.trimAutoWhitespace`                 | `remove_trailing_whitespace_on_save`           |
 76| `editor.suggestOnTriggerCharacters`         | `show_completions_on_input`                    |
 77| `editor.suggest.showWords`                  | `completions.words`                            |
 78| `editor.inlineSuggest.enabled`              | `show_edit_predictions`                        |
 79
 80**Files & Workspace**
 81
 82| VS Code Setting             | Zed Setting                    |
 83| --------------------------- | ------------------------------ |
 84| `files.autoSave`            | `autosave`                     |
 85| `files.autoSaveDelay`       | `autosave.milliseconds`        |
 86| `files.insertFinalNewline`  | `ensure_final_newline_on_save` |
 87| `files.associations`        | `file_types`                   |
 88| `files.watcherExclude`      | `file_scan_exclusions`         |
 89| `files.watcherInclude`      | `file_scan_inclusions`         |
 90| `files.simpleDialog.enable` | `use_system_path_prompts`      |
 91| `search.smartCase`          | `use_smartcase_search`         |
 92| `search.useIgnoreFiles`     | `search.include_ignored`       |
 93
 94**Terminal**
 95
 96| VS Code Setting                       | Zed Setting                         |
 97| ------------------------------------- | ----------------------------------- |
 98| `terminal.integrated.fontFamily`      | `terminal.font_family`              |
 99| `terminal.integrated.fontSize`        | `terminal.font_size`                |
100| `terminal.integrated.lineHeight`      | `terminal.line_height`              |
101| `terminal.integrated.cursorStyle`     | `terminal.cursor_shape`             |
102| `terminal.integrated.cursorBlinking`  | `terminal.blinking`                 |
103| `terminal.integrated.copyOnSelection` | `terminal.copy_on_select`           |
104| `terminal.integrated.scrollback`      | `terminal.max_scroll_history_lines` |
105| `terminal.integrated.macOptionIsMeta` | `terminal.option_as_meta`           |
106| `terminal.integrated.{platform}Exec`  | `terminal.shell`                    |
107| `terminal.integrated.env.{platform}`  | `terminal.env`                      |
108
109**Tabs & Panels**
110
111| VS Code Setting                                    | Zed Setting                                        |
112| -------------------------------------------------- | -------------------------------------------------- |
113| `workbench.editor.showTabs`                        | `tab_bar.show`                                     |
114| `workbench.editor.showIcons`                       | `tabs.file_icons`                                  |
115| `workbench.editor.tabActionLocation`               | `tabs.close_position`                              |
116| `workbench.editor.tabActionCloseVisibility`        | `tabs.show_close_button`                           |
117| `workbench.editor.focusRecentEditorAfterClose`     | `tabs.activate_on_close`                           |
118| `workbench.editor.enablePreview`                   | `preview_tabs.enabled`                             |
119| `workbench.editor.enablePreviewFromQuickOpen`      | `preview_tabs.enable_preview_from_file_finder`     |
120| `workbench.editor.enablePreviewFromCodeNavigation` | `preview_tabs.enable_preview_from_code_navigation` |
121| `workbench.editor.editorActionsLocation`           | `tab_bar.show_tab_bar_buttons`                     |
122| `workbench.editor.limit.enabled` / `value`         | `max_tabs`                                         |
123| `workbench.editor.restoreViewState`                | `restore_on_file_reopen`                           |
124| `workbench.statusBar.visible`                      | `status_bar.show`                                  |
125
126**Project Panel (File Explorer)**
127
128| VS Code Setting                | Zed Setting                         |
129| ------------------------------ | ----------------------------------- |
130| `explorer.compactFolders`      | `project_panel.auto_fold_dirs`      |
131| `explorer.autoReveal`          | `project_panel.auto_reveal_entries` |
132| `explorer.excludeGitIgnore`    | `project_panel.hide_gitignore`      |
133| `problems.decorations.enabled` | `project_panel.show_diagnostics`    |
134| `explorer.decorations.badges`  | `project_panel.git_status`          |
135
136**Git**
137
138| VS Code Setting                      | Zed Setting                                    |
139| ------------------------------------ | ---------------------------------------------- |
140| `git.enabled`                        | `git_panel.button`                             |
141| `git.defaultBranchName`              | `git_panel.fallback_branch_name`               |
142| `git.decorations.enabled`            | `git.inline_blame`, `project_panel.git_status` |
143| `git.blame.editorDecoration.enabled` | `git.inline_blame.enabled`                     |
144
145**Window & Behavior**
146
147| VS Code Setting                                  | Zed Setting                              |
148| ------------------------------------------------ | ---------------------------------------- |
149| `window.confirmBeforeClose`                      | `confirm_quit`                           |
150| `window.nativeTabs`                              | `use_system_window_tabs`                 |
151| `window.closeWhenEmpty`                          | `when_closing_with_no_tabs`              |
152| `accessibility.dimUnfocused.enabled` / `opacity` | `active_pane_modifiers.inactive_opacity` |
153
154**Other**
155
156| VS Code Setting            | Zed Setting                                              |
157| -------------------------- | -------------------------------------------------------- |
158| `http.proxy`               | `proxy`                                                  |
159| `npm.packageManager`       | `node.npm_path`                                          |
160| `telemetry.telemetryLevel` | `telemetry.metrics`, `telemetry.diagnostics`             |
161| `outline.icons`            | `outline_panel.file_icons`, `outline_panel.folder_icons` |
162| `chat.agent.enabled`       | `agent.enabled`                                          |
163| `mcp`                      | `context_servers`                                        |
164
165Zed doesn’t import extensions or keybindings, but this import gets core editor behavior close to your VS Code setup. If you skip that step during setup, you can still import settings manually later via the command palette:
166
167`Cmd+Shift+P → Zed: Import VS Code Settings`
168
169## Set Up Editor Preferences
170
171You can configure most settings in the Settings Editor ({#kb zed::OpenSettings}). For advanced settings, run `zed: open settings file` from the Command Palette to edit your settings file directly.
172
173Here’s how common VS Code settings translate:
174| VS Code | Zed | Notes |
175| --- | --- | --- |
176| editor.fontFamily | buffer_font_family | Zed uses Zed Mono by default |
177| editor.fontSize | buffer_font_size | Set in pixels |
178| editor.tabSize | tab_size | Can override per language |
179| editor.insertSpaces | insert_spaces | Boolean |
180| editor.formatOnSave | format_on_save | Works with formatter enabled |
181| editor.wordWrap | soft_wrap | Supports optional wrap column |
182
183Zed also supports per-project settings. You can find these in the Settings Editor as well.
184
185## Open or Create a Project
186
187After setup, press `Cmd+O` (`Ctrl+O` on Linux) to open a folder. This becomes your workspace in Zed. There's no support for multi-root workspaces or `.code-workspace` files like in VS Code. Zed keeps it simple: one folder, one workspace.
188
189To start a new project, create a directory using your terminal or file manager, then open it in Zed. The editor will treat that folder as the root of your project.
190
191You can also launch Zed from the terminal inside any folder with:
192`zed .`
193
194Once inside a project, use `Cmd+P` to jump between files quickly. `Cmd+Shift+P` (`Ctrl+Shift+P` on Linux) opens the command palette for running actions / tasks, toggling settings, or starting a collaboration session.
195
196Open buffers appear as tabs across the top. The Project Panel shows your file tree and Git status. Collapse it with `Cmd+B` for a distraction-free view.
197
198## Differences in Keybindings
199
200If you chose the VS Code keymap during onboarding, most shortcuts should already feel familiar.
201Here’s a quick reference for where keybindings match and where they differ.
202
203### Common Shared Keybindings (Zed <> VS Code)
204
205| Action                      | Shortcut               |
206| --------------------------- | ---------------------- |
207| Find files                  | `Cmd + P`              |
208| Run a command               | `Cmd + Shift + P`      |
209| Search text (project-wide)  | `Cmd + Shift + F`      |
210| Find symbols (project-wide) | `Cmd + T`              |
211| Find symbols (file-wide)    | `Cmd + Shift + O`      |
212| Toggle left dock            | `Cmd + B`              |
213| Toggle bottom dock          | `Cmd + J`              |
214| Open terminal               | `Ctrl + ~`             |
215| Open file tree explorer     | `Cmd + Shift + E`      |
216| Close current buffer        | `Cmd + W`              |
217| Close whole project         | `Cmd + Shift + W`      |
218| Refactor: rename symbol     | `F2`                   |
219| Change theme                | `Cmd + K, Cmd + T`     |
220| Wrap text                   | `Opt + Z`              |
221| Navigate open tabs          | `Cmd + Opt + Arrow`    |
222| Syntactic fold / unfold     | `Cmd + Opt + {` or `}` |
223
224### Different Keybindings (Zed <> VS Code)
225
226| Action              | VS Code               | Zed                    |
227| ------------------- | --------------------- | ---------------------- |
228| Open recent project | `Ctrl + R`            | `Cmd + Opt + O`        |
229| Move lines up/down  | `Opt + Up/Down`       | `Cmd + Ctrl + Up/Down` |
230| Split panes         | `Cmd + \`             | `Cmd + K, Arrow Keys`  |
231| Expand Selection    | `Shift + Alt + Right` | `Opt + Up`             |
232
233### Unique to Zed
234
235| Action              | Shortcut                     | Notes                                            |
236| ------------------- | ---------------------------- | ------------------------------------------------ |
237| Toggle right dock   | `Cmd + R` or `Cmd + Alt + B` |                                                  |
238| Syntactic selection | `Opt + Up/Down`              | Selects code by structure (e.g., inside braces). |
239
240### How to Customize Keybindings
241
242To edit your keybindings:
243
244- Open the command palette (`Cmd+Shift+P`)
245- Run `Zed: Open Keymap Editor`
246
247This opens a list of all available bindings. You can override individual shortcuts, remove conflicts, or build a layout that works better for your setup.
248
249Zed also supports chords (multi-key sequences) like `Cmd+K Cmd+C`, like VS Code does.
250
251## Differences in User Interfaces
252
253### No Workspace
254
255VS Code uses a dedicated Workspace concept, with multi-root folders, `.code-workspace` files, and a clear distinction between “a window” and “a workspace.”
256Zed simplifies this model.
257
258In Zed:
259
260- There is no workspace file format. Opening a folder is your project context.
261
262- Zed does not support multi-root workspaces. You can only open one folder at a time in a window.
263
264- Most project-level behavior is scoped to the folder you open. Search, Git integration, tasks, and environment detection all treat the opened directory as the project root.
265
266- Per-project settings are optional. You can add a `.zed/settings.json` file inside a project to override global settings, but Zed does not use `.code-workspace` files and won’t import them.
267
268- You can start from a single file or an empty window. Zed doesn’t require you to open a folder to begin editing.
269
270The result is a simpler model:
271Open a folder → work inside that folder → no additional workspace layer.
272
273### Navigating in a Project
274
275In VS Code, the standard entry point is opening a folder. From there, the left-hand panel is central to navigation.
276Zed takes a different approach:
277
278- You can still open folders, but you don’t need to. Opening a single file or even starting with an empty workspace is valid.
279- The Command Palette (`Cmd+Shift+P`) and File Finder (`Cmd+P`) are primary navigation tools. The File Finder searches files, symbols, and commands across the workspace.
280- Instead of a persistent panel, Zed encourages you to:
281  - Fuzzy-find files by name (`Cmd+P`)
282  - Jump directly to symbols (`Cmd+Shift+O`)
283  - Use split panes and tabs for context, rather than keeping a large file tree open (though you can do this with the Project Panel if you prefer).
284
285The UI keeps auxiliary panels out of the way so navigation stays centered on code.
286
287### Extensions vs. Marketplace
288
289Zed does not offer as many extensions as VS Code. The available extensions are focused on language support, themes, syntax highlighting, and other core editing enhancements.
290
291Several features that typically require extensions in VS Code are built into Zed:
292
293- Real-time collaboration with voice and cursor sharing (no Live Share required)
294- AI coding assistance (no Copilot extension needed)
295- Built-in terminal panel
296- Project-wide fuzzy search
297- Task runner with JSON config
298- Inline diagnostics and code actions via LSP
299
300You won’t find one-to-one replacements for every VS Code extension, especially if you rely on tools for DevOps, containers, or test runners. Zed's extension catalog is still growing and remains smaller.
301
302### Collaboration in Zed vs. VS Code
303
304Unlike VS Code, Zed doesn’t require an extension to collaborate. It’s built into the core experience.
305
306- Open the Collab Panel in the left dock.
307- Create a channel and [invite your collaborators](https://zed.dev/docs/collaboration#inviting-a-collaborator) to join.
308- [Share your screen or your codebase](https://zed.dev/docs/collaboration#share-a-project) directly.
309
310Once connected, you’ll see each other's cursors, selections, and edits in real time. Voice chat is included, so you can talk as you work. There’s no need for separate tools or third-party logins.
311
312Learn how [Zed uses Zed](https://zed.dev/blog/zed-is-our-office) to plan work and collaborate.
313
314### Using AI in Zed
315
316If you’re used to GitHub Copilot in VS Code, you can do the same in Zed. You can also explore other agents through Zed Pro, or bring your own keys and connect without authentication. You can disable AI features entirely if you prefer.
317
318#### Configuring GitHub Copilot
319
320You should be able to sign-in to GitHub Copilot by clicking on the Zeta icon in the status bar and following the setup instructions.
321You can also add this to your settings:
322
323```json
324{
325  "features": {
326    "edit_prediction_provider": "copilot"
327  }
328}
329```
330
331To invoke completions, just start typing. Zed will offer suggestions inline for you to accept.
332
333#### Additional AI Options
334
335To use other AI models in Zed, you have several options:
336
337- Use Zed’s hosted models, with higher rate limits. Requires [authentication](https://zed.dev/docs/authentication) and subscription to [Zed Pro](https://zed.dev/docs/ai/subscription.html).
338- Bring your own [API keys](https://zed.dev/docs/ai/llm-providers.html), no authentication needed
339- Use [external agents like Claude Agent](https://zed.dev/docs/ai/external-agents.html).
340
341### Advanced Config and Productivity Tweaks
342
343Zed exposes advanced settings for power users who want to fine-tune their environment.
344
345Here are a few useful tweaks:
346
347**Format on Save:**
348
349```json
350"format_on_save": "on"
351```
352
353**Enable direnv support:**
354
355```json
356"load_direnv": "shell_hook"
357```
358
359**Custom Tasks**: Define build or run commands in your `tasks.json` (accessed via command palette: `zed: open tasks`):
360
361```json
362[
363  {
364    "label": "build",
365    "command": "cargo build"
366  }
367]
368```
369
370**Bring over custom snippets**
371Copy your VS Code snippet JSON directly into Zed's snippets folder (`zed: configure snippets`).