Vim Adventures nails the "Zelda meets text editing" hook and the first few levels are free. The limitation is structural: the game rewards moving a sprite around a grid, which teaches you hjkl and a few motions but never the thing you actually do all day — change a word, delete inside brackets, replace across a file. Here's the real menu of alternatives, fairly.
| Tool | What it is | Honest take |
|---|---|---|
| vimtutor | Built-in 30-min text tutorial (vimtutor in any terminal). | Free, essential, do it once — but it's a read-along, not a drill. |
| OpenVim | Free web simulation of basic vim. | Nice guided intro; stops at the basics and isn't maintained much. |
| VimHero | Interactive lessons + code challenges. | Genuinely good and closest in spirit; a solid paid option. |
| hjkl / snake games | Tiny browser games for motion practice. | Fun warm-ups, not a curriculum. |
| Practical Vim | The canonical book. | Best mental model anywhere — but it's reading, not reps. |
| VimJutsu | Real vim engine in the browser, real edits as timed missions. | Free start, $49 one-time for the full path. |
Two things separate a tool that builds transferable skill from one that's just fun:
VimJutsu runs a real vim engine (the same one Replit ships) in a browser tab — no install, no config. Instead of a maze, every mission is a real edit: "copy line 5", "replace every hello with goodbye", "comment out four lines at once". Each mission validates against the actual buffer and registers, so any correct keystroke sequence passes — you're learning outcomes, not a single scripted answer. And like vimgolf, every mission counts your keystrokes against a target: beat it and watch your count drop, mission after mission. The reflexes carry straight over to vim, neovim, and any IDE's vim mode.
Pricing is a one-time $49 for the full 50-mission path — no subscription — and you can start free without paying anything.
Skip the maze. Edit a real file. Try a live vim mission right now — free, in your browser, with a keystroke target to beat.
Start training free →