TL;DR

  • Vim on Zed is a short, opinionated browser tutor that takes you from zero to comfortable with vim motions inside the Zed editor. 30 bite-size lessons, each built around one keystroke and a ~30 second mission.
  • Fully client-side, keyboard-first, free. Try it here.

The Spark

I switched to Zed and turned on vim mode. I’ve been a fan of vim since I first ran into it, early in my career. Working with the machine at the speed of thought is something I’ve always been moving towards. It’s why I picked up touch typing. It’s why I adopted Wispr Flow. Vim motions were always a point of interest. But whenever I tried to learn, I hit the actual learning curve, which is less a curve and more a wall with hjkl scratched into it.

The existing ways to learn vim all teach vim-the-editor. vimtutor lives in a terminal. OpenVim and Vim Adventures teach you Vim’s world: its command line, its buffers, its plugins. None of them teach the thing I actually had in front of me.

The Problem

Zed’s vim mode is not Vim. It’s a from-scratch re-implementation in Rust, with Neovim used only as a reference in Zed’s test suite. The Zed team considered embedding Neovim and rejected it: in their words, they’d “have to throw this DNA away” (the collaborative text engine, the performance work) whenever vim mode was on, or build everything twice.

The practical consequence: the motions behave like Vim, but everything around them diverges. : opens Zed’s command palette, not Vim’s command line (though :w and friends still work as aliases). Vim mode is dead in most text inputs outside the editor. There are no real Vim buffers; Zed maps the idea onto tabs and panes. And some classics simply don’t exist yet: ex commands can’t even take an argument, so :w filename is out.

So a generic vim tutorial sets you up to learn habits Zed will break. You need a tutor that teaches vim motions and is honest about where Zed does its own thing.

The timing makes this sharper. A lot of non-coders are getting into coding right now with AI: product managers, designers, marketers. I’m one of them. We’re walking into editors like Zed without years of terminal Vim behind us, so the gap between “what Vim tutorials teach” and “what’s actually in front of you” hits us first.

The Solution

A browser tutor with one rule per lesson: one keystroke, one ~30 second mission, verified live. You type real keys into a faux editor with a real NORMAL/INSERT/VISUAL mode indicator, and the app checks that you actually did the motion rather than just reading about it.

30 lessons run from escape and hjkl all the way to registers, macros, marks, and a dedicated lesson on Zed-specific bindings (the ones that replace the Vim plugin tour a newcomer would otherwise expect). Every divergence from real Vim is called out in place, grounded against Zed’s official vim docs and default keymap.

Progress persists locally. No backend, no account, nothing leaves your browser.

Why this one is mine

The lesson content isn’t vibes. Before any code, I built a research brief verified against Zed stable, with every claim anchored to zed.dev/docs/vim and Zed’s actual default keymap file. The tutor teaches what Zed does, not what Vim documentation says it should do. That research-first workflow (deep brief in, app out) is the same pattern I used for Ghostty Configurator, and it’s become my default way of building with AI.

Try it

🔗 Vim on Zed · works best on a physical keyboard, desktop only.