I switched from VS Code to Zed twice. The first time I lasted four days before crawling back. The second time stuck — but only because I stopped trying to use Zed as if it were VS Code and actually read the migration docs.
This is the guide I wish I'd had on day one.
If you want the marketing pitch on why Zed is fast, I already wrote that in Zed 1.0 Is Here — A GPU-Rendered Editor That Outpaces VS Code. This post is the migration mechanics: settings, keybindings, AI, extensions, and the gotchas.
Step 1: Install Zed and let it import your VS Code settings
Skip the manual config. Zed has a one-click import.
On macOS:
brew install zed-editor/zed/zed
On Linux:
curl -f https://zed.dev/install.sh | sh
Windows users — there's an installer on zed.dev/download. Launch from any project with zed .
The first time Zed opens, it shows an onboarding screen with a "Import VS Code settings" toggle. Click it. This pulls across:
- Editor font, size, weight, and tab behavior
- Word wrap, cursor styles, line numbers, minimap, scrollbars
- Autosave, file associations, and search exclusions
- Terminal font, cursor, shell config
- Tab visibility, preview behavior, status bar
- Project panel — folder compacting, git status, diagnostics
- Git inline blame and decorations
- Window confirmation prompts and inactive pane opacity
If you skipped onboarding or want to re-run it later, hit Cmd+Shift+P and run zed: import vs code settings. Same result.
What it doesn't import: extension-specific settings (because the extensions don't exist), keybinding overrides, and snippets. Those are separate steps below.
Step 2: Understand the workspace model — this is where most people break
Zed has no .code-workspace files. No multi-root folders. No "Add Folder to Workspace."
You open one directory. That's the project.
For per-project settings, drop a .zed/settings.json in the repo root:
{
"tab_size": 2,
"format_on_save": "on",
"languages": {
"TypeScript": {
"formatter": "prettier"
}
}
}
This file commits with your repo. Teammates get the same config — no extension required.
If you've been running a multi-root VS Code workspace with three repos pinned together, you have two options in Zed: open them as separate windows, or move them into a monorepo. There's no third path. I tried fighting this for a day and lost.
Step 3: Rewire your keybindings (or accept the new ones)
The shortcuts that survived the move:
Cmd+P— find filesCmd+Shift+P— command paletteCmd+Shift+F— project-wide searchCmd+T— find symbols across the projectCmd+,— settingsCtrl+~— terminal
The ones that will mess with your hands:
| Action | VS Code | Zed |
|---|---|---|
| Open recent project | Ctrl+R |
Cmd+Opt+O |
| Move line up/down | Opt+Up/Down |
Cmd+Ctrl+Up/Down |
| Split pane | Cmd+\ |
Cmd+K then arrow |
| Toggle right dock | Cmd+B (sidebar) |
Cmd+R or Cmd+Alt+B |
That Opt+Up/Down shift is the worst one. In Zed, those keys are now syntactic selection — the editor expands the selection by code structure (token → expression → statement → block). It's actually brilliant once you stop fighting it. Try it inside a function call. The selection grows by AST node.
To rebind anything, run zed: open keymap in the command palette. The keymap is JSON. You can copy a VS-Code-style block straight in:
[
{
"context": "Editor",
"bindings": {
"alt-up": "editor::MoveLineUp",
"alt-down": "editor::MoveLineDown",
"cmd-\\": "pane::SplitRight"
}
}
]
Zed also supports chord sequences — Cmd+K Cmd+C to comment, the same way VS Code does. Nothing exotic in the syntax.
Step 4: Set up AI (this is the actual reason to switch)
Zed's AI panel is the part that surprised me. It's faster than the Copilot panel, and the agent mode is genuinely useful — not the demo-ware most editors ship.
Three options for AI providers:
- GitHub Copilot → Open
Cmd+,, go to AI → Edit Predictions, click "Sign in to GitHub" under GitHub Copilot. Same Copilot subscription works. - Zed Pro → Hosted Claude and GPT models. Pay Zed directly, no key juggling.
- Bring your own API key → Drop your Anthropic, OpenAI, or other key into the AI settings. Cheapest path if you already have credits.
For Claude Code users — Zed has an Agent Panel that connects to your Claude Code subscription directly. If you've been using Claude Code in the terminal, this is the natural next step. I've covered the broader workflow in The Ultimate Claude Code Workflow Guide.
The thing nobody mentions: Zed's edit prediction is a separate setting from the chat agent. Both can be off. Both can be on. They use different models. Check both.
Step 5: Extensions — you'll need fewer than you think
Zed's extension registry is small. This panicked me for about an hour, then I made a list of every VS Code extension I "needed" and found that two-thirds of them were features Zed already ships:
- Live Share → built-in real-time collaboration with voice chat in the Collab Panel
- GitLens → built-in inline blame, decorations, and history
- Prettier / ESLint → run via LSP automatically once you set the formatter
- Path Intellisense → built-in fuzzy file path completion
- Better Comments → handled by Zed's syntax themes
- Todo Tree → built-in via project search
- Remote SSH → Zed has this; configure in
Cmd+Shift+P→ "remote: connect" - Tasks runner → built-in, configured via
tasks.json
What you'll actually install from the Zed registry: language packs (Astro, Svelte, Solidity, etc.), themes, and a handful of Git tools. That's about it.
If you were maintaining or building VS Code extensions, none of that work transfers directly. Zed extensions use Wasm and a different API. I covered the VS Code side in Building VS Code Extensions in 2026: The Complete Modern Guide — the mental model is similar but the surface area is smaller in Zed.
Step 6: Snippets, tasks, and the small stuff
Snippets — Zed reads VS Code snippet JSON directly. Run snippets: configure snippets and paste your file in. Done.
Tasks — Run zed: open tasks and drop in:
[
{
"label": "build",
"command": "cargo build"
},
{
"label": "test:watch",
"command": "npm run test -- --watch",
"use_new_terminal": true
}
]
Trigger from the command palette with task: spawn.
direnv — if you use .envrc files, add this to settings:
"load_direnv": "shell_hook"
Without it, your project env vars won't pipe into Zed's terminal or LSP processes. Tripped over this for a full afternoon before I read the docs.
Format on save — one line:
"format_on_save": "on"
The honest gotchas
Things that will frustrate you in week one:
→ No Jupyter notebook support as polished as VS Code's. If you're a notebook-heavy data person, stay on VS Code or use Cursor.
→ Debugger is newer. It works for most languages but the breakpoint UX has rough edges compared to VS Code's mature DAP integration.
→ No Remote Containers. If your team uses dev containers extensively, this is a real gap. Remote SSH works fine; containers don't.
→ Settings live in JSON, not a GUI for anything beyond the basics. If you preferred VS Code's settings UI, Zed will feel terse.
→ Less documentation written by random bloggers. When something breaks, you'll find fewer Stack Overflow answers. The official docs are good. Random Medium posts barely exist.
FAQ
Can Zed import my VS Code settings automatically?
Yes. During Zed's onboarding, you'll see an option to import VS Code settings — it covers fonts, tabs, terminal, git, project panel, and most editor preferences. You can also trigger it later from the command palette with zed: import vs code settings. It won't import every extension setting, and snippets and keybindings need a separate step.
Does Zed support VS Code extensions?
No, Zed runs its own extension system and cannot install VS Code marketplace extensions. The Zed registry is smaller but covers the essentials — language support, themes, and Git tools. Several VS Code features are built into Zed natively, including AI assistance, real-time collaboration, the terminal, and the task runner, so you'll need fewer extensions to start with.
How do I migrate VS Code keybindings to Zed?
Open the command palette in Zed and run zed: open keymap. Most universal shortcuts work the same — Cmd+P, Cmd+Shift+P, Cmd+Shift+F. The differences hit muscle memory: split panes use Cmd+K then arrow, move-line uses Cmd+Ctrl+Up/Down, and the right dock toggles with Cmd+R. Customize the JSON keymap to match your VS Code defaults if needed.
Will my VS Code snippets work in Zed?
Yes, Zed reads VS Code snippet JSON directly. Run snippets: configure snippets from the command palette and paste your existing snippet file in. Language-specific snippet files transfer cleanly, and you don't need to rewrite them.
Is Zed faster than VS Code in real-world projects?
Yes, noticeably. Zed is GPU-rendered and written in Rust, so opening large files, scrolling, and search-in-project all feel sharper. The bigger speed-up is in the AI panel — agents and edit predictions return faster than VS Code's Copilot panel in my testing. The cost is fewer extensions and less ecosystem maturity.
What to do now
If you're considering the switch, here's the practical order:
- Install Zed alongside VS Code. Don't uninstall anything yet.
- Run the settings import on your main project.
- Open
.zed/settings.jsonand add per-project overrides. - Rebind the three or four keybindings that hurt your hands most.
- Pick one AI provider and configure it.
- Use Zed for one full week on real work. No falling back.
By day five you'll know if it's a fit. The speed difference on large projects is real. The agent panel actually pays off if you're already in the AI-assisted-coding flow. The extension gap is smaller than it looks once you list what you actually use.
If after a week you're still fighting it, go back to VS Code. There's no medal for switching editors. But most builders who follow this migration path stick with Zed — and the ones who don't, usually had a specific blocker (notebooks, remote containers) that Zed hasn't shipped yet.
That's the honest take.