Vim starters, one motion per page
Twenty-four motions for developers and admins who meet Vim constantly on servers and in terminals and bounce off the modal editing: modes as the keyboard changing jobs, insert as a room you enter and leave, h j k l and the word motions, line and screen motions, paragraph jumps, the verb and noun grammar of operators plus motions and text objects, the delete, change and yank families, text objects as nouns, the dot command as the replay, counts as multipliers, search and n N as motion, :s with the g and c flags, visual mode as the third mode, undo branches, registers as named clipboards, marks as bookmarks, splits and windows, :w :q and the escape panic, vimtutor and :help as the canonical teachers, one motion per page.
A diagram, the classic trap, and one thing to go try this week. That's a page.
Vim starters, one motion per page
Twenty-four motions for developers and admins who meet Vim constantly on servers and in terminals and bounce off the modal editing: modes as the keyboard changing jobs, insert as a room you enter and leave, h j k l and the word motions, line and screen motions, paragraph jumps, the verb and noun grammar of operators plus motions and text objects, the delete, change and yank families, text objects as nouns, the dot command as the replay, counts as multipliers, search and n N as motion, :s with the g and c flags, visual mode as the third mode, undo branches, registers as named clipboards, marks as bookmarks, splits and windows, :w :q and the escape panic, vimtutor and :help as the canonical teachers, one motion per page.
Set in Space Grotesk, Inter and JetBrains Mono (SIL Open Font License).
Command behaviour checked against Vim's own documentation (:help, vimhelp.org / vimdoc.sourceforge.net), the Neovim user documentation (neovim.io/doc/user), and the vimtutor shipped with Vim. Vim vs Neovim differences are cited as the documents state them (configuration: Vimscript vs Lua). Practice claims via PubMed (16719566, 31311973); teaching conventions are named as conventions. None of these organisations is affiliated with or endorses this book.
General information only. Vim and Neovim behaviour can vary by version, build and configuration; check :help in the editor you actually use. Not advice for your specific system.
Your purchase is for personal use only. You do not have redistribution rights: please do not share, resell, or republish this book or its pages.
© 2026 Steve Hodgkiss. All rights reserved. Personal use only; no redistribution rights.
Edition 1.0 · stevehodgkiss.net
Contents
The modal idea
Modes are why Vim feels alien: the same keys change meaning, insert is a room, and hjkl is where the hand lives.
- 01The keyboard changes jobs
- 02Insert is a room you enter
Vim is a modal editor: the same keys do different jobs depending on the mode, and Vim's own help (vimhelp.org, intro.txt) describes modes as the main difference from other editors. That learning one motion at a time, with daily short practice, is teaching convention supported by studies of distributed practice (PubMed 16719566) and between-session consolidation (PubMed 31311973), not a measurement about Vim specifically.
The keyboard changes jobs
Let's say you ssh into a server, a config file opens in Vim, you type, and the screen fills with letters you didn't want. You're not broken. The keyboard changed jobs and nobody told you.
Vim has modes. In insert mode, keys type text. In normal mode, the same keys are commands: h moves left, x deletes a character. The letters appearing as you move are the classic first shock: you're moving in normal mode while expecting to type.
It's one keyboard with two jobs.
Open any file in Vim and press Esc, then type h and l a few times. You're moving, not typing. That gap is the whole book.
Vim's help (insert.txt) names insert mode as the mode where entered text is inserted into the buffer; i and a enter it, Esc returns to normal mode. Vim help recommends spending most time in normal mode and entering insert only to add text.
Insert is a room you enter
Let's say you've just typed a paragraph and now you want to move to the top of the file. In most editors you just do it. In Vim, the arrow keys feel wrong and nothing behaves, because you're still inside the typing room.
Think of insert mode as a room. i enters it before the cursor, a after it. You go in, you type, and then Esc is the door back out, to normal mode, where moving and editing live. Vim's own tutorial teaches exactly this rhythm.
Type in the room. Live in the hallway.
In any file: press i, type a sentence, press Esc, move with h and l. Go in and out five times until the door feels normal.
Vim's help (motion.txt, 'operator') defines operators: d for delete, c for change, y for yank. An operator command is operator plus a motion, e.g. dw deletes to the next word. This verb-plus-noun structure is how Vim's own documentation describes operator commands.
Vim is verbs and nouns
Let's say you know a dozen random Vim keystrokes and they feel like spells. There's a reason they never stick: memorised spells don't compose.
Vim commands are sentences. A verb is an operator: d deletes, c changes, y yanks. A noun is a motion or a text object: w a word, ) a sentence, ip a paragraph. Verb plus noun: dw deletes a word, y} yanks a paragraph. Learn three verbs and ten nouns and you know thirty commands. Vim's help documents this as the operator-motion grammar.
You don't memorise Vim. You speak it.
In a scratch file, run dw, then d dollar, then y w. Three sentences, same verb, different nouns. That's the grammar working.
Safety and the teachers
The parts that make Vim safe to experiment in, and the two teachers that ship inside it.
- 01The exit doors
- 02vimtutor and :help
Vim's cmdline.txt: :w writes the file, :q quits, :wq or ZZ writes and quits, :q! quits discarding changes, :e! reloads. Esc returns to normal mode from insert or command mode. These are the documented escape routes.
The exit doors
Let's say you're in Vim on a production server, you've typed something weird, and your terminal is beeping. Everyone has lived this. First: Esc, Esc. Whatever mode you're stuck in, Esc returns you to normal.
Then the doors: :wq writes and quits, :q! quits and throws the changes away, :w saves but stays. There is no Vim situation where you can't get out. The classic mistake on a server: quitting with :q, getting told the file is modified, and pressing things at random. The ! is the answer.
Esc, then :q!. Memorise that pair and Vim can never trap you.
Open any file, type junk, then Esc :q! and watch it vanish. That exit exists in every Vim, everywhere. Panic over.
Vim's helphelp.txt: :help opens Vim's built-in manual; topics are looked up with :help topic. vimtutor is a 30-minute interactive tutorial shipped with Vim (vimtutor man page; Neovim names it :Tutor). Neovim's docs state its main user-visible difference from Vim: configuration in Lua instead of Vimscript, while Vimscript still works.
vimtutor and :help
Let's say you finish this book and want the real thing. The best Vim teacher ships inside Vim.
Run vimtutor in a terminal: a 30-minute interactive lesson that comes with every install. Neovim calls it :Tutor. And :help anything is the manual, offline, exact: :help w, :help :s, :help text-objects. Every fact in this book came from those pages. On the fork question: Neovim's own docs name config in Lua instead of Vimscript as the user-visible difference; Vimscript still works there.
The manual is inside the editor. Ask it questions.
Run vimtutor once, all the way through, this week. Then in Vim, :help dot and read two paragraphs of the real manual.