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