01 / Title
Deck 10 · code editor / dev tooling

Zed. The editor that treats speed as a feature.

A Rust-native, GPU-rendered editor from the people who built Tree-sitter — collaborative by default, AI-native from day one, and free. What it actually gets you, how to move over from VSCode or WebStorm without losing your keybindings, and a real config to start from — for macOS and Ubuntu.

Rust, no Electron GPU-rendered UI AI-native Multiplayer built in Free, source-available
02 · why look now

Every keystroke in VSCode or WebStorm goes through a browser or a JVM.

Not a knock on either — both are excellent, mature tools. But the render path has extra stops most people never think about, because they've never felt the alternative.

⚙ The usual path

VSCode: keystroke → Chromium renderer → DOM/layout → (for extensions) an IPC hop to the Node.js extension host and back.

WebStorm: keystroke → Swing/AWT UI on the JVM → PSI model update → garbage collector somewhere in the loop.

⚡ Zed's path

Keystroke → native Rust → GPUI's GPU compositor. No browser, no JVM, no interpreter sitting between your finger and the pixel.

Zed's own stated goal Sub-millisecond input latency, as a design constraint from the first line of code — not a metric chased after the fact. (Their claim, not an independent benchmark — feel is what actually convinces you.)
03 · origin

Built by the people who made Tree-sitter.

04 · why better · speed

Speed isn't a patch here — it's the architecture.

GPUI

Zed's own GPU-accelerated UI framework. The text buffer, the tab bar, the settings panel, the project tree — all of it renders through one framework, straight to the GPU. There's no separate layout/paint/composite pipeline built for general web pages doing double duty as your editor's UI.

05 · why better · AI

AI wired into the buffer, not bolted on top.

Edit prediction

A model trained specifically to predict your next edit across the whole file — not just the next token at the cursor — built into the core, on by default.

Agent panel

A first-class chat/agent surface in the sidebar with pluggable providers — Anthropic, OpenAI, or a local model via Ollama — your choice, your key.

Parallel agents

2026's addition: run several agent threads at once against different parts of a task, instead of one linear conversation queue.

The difference that actually matters: because AI features share the same Rope/CRDT buffer model as everything else, streamed edits apply as incremental patches — not a full-file rewrite dropped on top of whatever you were mid-typing.

06 · why better · collaboration

Multiplayer was never an afterthought.

Zed's buffers are built on CRDTs — Conflict-free Replicated Data Types — from day one, not retrofitted for a "Live Share" feature later.

◆ Zed

Multiplayer is core editor behavior: open a project, invite someone, see their cursor and selection live. Concurrent edits merge deterministically — no lock, no "waiting for the other person to save."

◆ VSCode Live Share

A separate extension with its own sign-in and its own transport, layered on top of an editor that wasn't built assuming two people would type in the same buffer at once.

07 · why better · footprint

One native process, not three glued together.

08 · honest trade-offs

What you'd actually be giving up.

A tool worth switching to is worth describing honestly. Here's where Zed still loses to what you're using today.

⊘ Extensions

The marketplace is a fraction of VSCode's. Core languages are covered well; niche tooling sometimes isn't there yet.

⊘ Bundled tools

No built-in DB client, HTTP client, or JVM-grade refactor/find-usages the way WebStorm ships out of the box — Zed leans on each language's LSP instead.

⊘ Windows

macOS and Linux got first-class support years earlier; Windows support is real but younger, and it shows in polish for edge cases.

09 · migrating from VSCode

Coming from VSCode: most of the muscle memory transfers.

// settings.json "base_keymap": "VSCode"
10 · migrating from WebStorm / IntelliJ

Coming from WebStorm: one real gap, everything else transfers.

// settings.json "base_keymap": "JetBrains"
11 · setup · macOS

Setup on macOS.

# Homebrew (recommended) brew install --cask zed # or: download the .dmg directly from zed.dev/download
  1. The Homebrew cask links the zed CLI into your PATH automatically — no separate "install shell command" step.
  2. Open a project from the terminal: zed .
  3. First run: Cmd+Shift+X to install language extensions you actually use (see slide 16).
12 · setup · Ubuntu

Setup on Ubuntu.

# Official installer — adds zed to PATH curl -f https://zed.dev/install.sh | sh
13 · the first ten minutes

The first ten minutes, in order.

  1. Set base_keymap to whatever you already type without thinking — VSCode or JetBrains.
  2. Open your real project: zed . — not a scratch folder. First impressions on toy code lie.
  3. Install the two or three language extensions you'll actually use today (slide 16) — don't install a marketplace's worth speculatively.
  4. Wire up formatting/linting to match what your team already enforces (slide 14) — this is the setting most people skip and then blame the editor for.
  5. Connect an AI provider in the agent panel if you use one, then leave it alone for a week before judging.
14 · example config

A real config, from a multi-package TypeScript + Vue project.

Genericized from an actual monorepo (server + client + shared packages) — the shape, not the specifics.

{ "base_keymap": "VSCode", // make the project panel + tabs feel like VSCode's Explorer "project_panel": { "dock": "left" }, "tabs": { "file_icons": true, "git_status": true }, "preview_tabs": { "enabled": false }, "minimap": { "show": "always" }, "tab_size": 2, "format_on_save": "on", "ensure_final_newline_on_save": true, "languages": { "TypeScript": { "formatter": [], "code_actions_on_format": { "source.fixAll.eslint": true } }, // A .vue file is the "Vue.js" language — the TypeScript block above never applies to it. Without its own entry it falls to the default formatter (Volar → Prettier defaults), which fights eslint-plugin-vue on every save. "Vue.js": { "formatter": [], "code_actions_on_format": { "source.fixAll.eslint": true } } }, "lsp": { "eslint": { "settings": { "workingDirectories": [{ "mode": "auto" }] } } } }
15 · anatomy of that config

Why it's shaped exactly like that.

16 · extensions worth grabbing

Extensions worth grabbing — and the ones you don't need.

StackExtensionNeeded?
Vue 3 SFCsVue.jsinstall
AstroAstroinstall
Tailwind CSS— none —built in, no extension
Icon theme, Material-styleoptionalcosmetic only

Zed's own habit is minimal-by-default — most core language support (TS, Python, Go, Rust, Markdown) ships without an extension at all. Install what a project actually needs, not a marketplace's worth up front.

17 · workspace & multiple projects

Workspace = whatever folders are open in that window.

18 · keymaps & working directories

Two settings people keep asking about, side by side.

base_keymapMuscle memory from
VSCodeVSCode / Cursor
JetBrainsWebStorm / IntelliJ
SublimeTextSublime Text
NoneZed's own defaults
Terminal cwdterminal.working_directory: "current_project_directory" (default) — the integrated terminal opens rooted at whichever project folder your active file belongs to. A separate setting from ESLint's workingDirectories on slide 14 — same word, two different jobs.
19 · shortcuts cheat sheet

Shortcuts you'll use every single day.

Straight from Zed's own default keymaps on GitHub — default-macos.json / default-linux.json — not guessed. Select the table to copy it as-is, or use the buttons.

ActionmacOSLinux / Windows
Command palette⌘⇧PCtrl+Shift+P
Quick open file⌘PCtrl+P
Show / hide project panel⌘⇧ECtrl+Shift+E
Show / hide terminal⌃`Ctrl+`
Show / hide git panel⌃⇧GCtrl+Shift+G
Switch project (Open Recent)⌃RCtrl+R
Show / hide AI agent panel⌘?Ctrl+?
Split pane right⌘\Ctrl+\
Close tab⌘WCtrl+W
Save⌘SCtrl+S
Go to line⌃GCtrl+G
Go to definitionF12F12
Format document⌘⇧ICtrl+Shift+I
Rename symbolF2F2
Toggle line comment⌘/Ctrl+/
20 · cursor handling

Cursor handling — multi-cursor, the fast way.

The same gesture VSCode and Sublime trained your fingers on. Copy or save this one too.

ActionmacOSLinux / Windows
Add cursor above⌘⌥↑Shift+Alt+↑
Add cursor below⌘⌥↓Shift+Alt+↓
Add cursor at click point⌥+ClickAlt+Click
Select next occurrence⌘DCtrl+D
Select all occurrences⌘⇧LCtrl+Shift+L
Undo last cursor / selection⌘UCtrl+U
The one that surprises VSCode users: add-cursor-above/below is ⌘⌥↑/↓ on macOS — VSCode's own default is ⌥⌘↑/↓ too, so this one already matches even before you touch base_keymap.
21 · where the old tool still wins

Where you'll still want the old tool nearby — for now.

None of that is a reason to skip Zed for everything else — it's a reason to keep the old tool one Cmd-Tab away for those specific jobs, and let Zed take the daily driving.

22 · troubleshooting

When Zed feels broken, it's usually reporting something real.

Two failures that look like editor bugs but aren't. Both start the same way: open ~/.local/share/zed/logs/Zed.log and read what Zed already knows.

# /etc/fstab — ntfs3 (kernel driver) instead of auto → ntfs-3g (FUSE) UUID=<disk-uuid> /mnt/data ntfs3 defaults,nofail,uid=1000,gid=1000,windows_names 0 0
The method: Zed logs its degradation before you feel it — watcher fallback, LSP restarts, formatter choice. Check there first, then recall the two cascade facts behind most surprises: project settings override user settings, and arrays replace — they don't merge.
23 · next

That's the surface. Want the mechanism?

GPUI, the Rope, Tree-sitter, and the CRDT layer that makes multiplayer work — and how each compares to what VSCode and WebStorm actually do under their own hoods.

Deck 10 · Zed Editor

Deck Controls

SpaceNext slide
Previous slide
Home / EndFirst / last slide
19Jump to slide N
OOverview grid
GGo to slide
FToggle fullscreen
BBlackout screen
?Toggle this help
Click left / right halfPrev / next slide
Swipe (touch)Prev / next slide
Press ? or Esc to close

All slides — click to jump