If you take exactly one command from Vim and never learn another, take . — the dot.
It repeats your last change. That's the entire feature. It sounds like nothing, and it's the single biggest gap between people who know Vim commands and people who are actually fast.
What it looks like
Say you have foo in eight places and you want bar.
Put the cursor on the first foo and type ciw — change inner word. Type bar, press Escape. That's your first edit, done the ordinary way.
Now move to the next foo and press ..
That's it. Vim replays the whole edit: delete the word, type bar, back to normal mode. One keystroke. Move, dot, move, dot. Eight replacements in about twelve keystrokes total, and you never repeated yourself.
Why not search and replace?
You could. :%s/foo/bar/g does all eight at once and it's the right tool sometimes.
But it's the wrong tool more often than people admit, because it's blind. It hits foo inside foobar. It hits foo in a comment you didn't want touched, and in the one string literal that has to stay. So you reach for /gc to confirm each one, and now you're answering y/n prompts and reading a regex you wrote from memory.
Dot works the other way round: you look, then you decide, then you press one key. You see every site before you change it, and the ones you skip cost you nothing — you just don't press dot.
For three occurrences, substitution is overkill. For eight, dot is usually faster in wall-clock terms because you're not writing a pattern. For eighty, use the substitution — that's what it's for.
The rule that makes dot work
Here's the part nobody tells you, and it's the reason dot feels unreliable to beginners.
Dot repeats one change. So make your changes single, self-contained sentences.
Bad: cursor before the word, x five times to delete foo, type bar. Dot repeats only the last x. Your edit wasn't one change, it was six, and dot has no idea what you meant.
Good: ciw then bar. One command, one change, fully described. Dot repeats it perfectly.
This is why ciw and . are always taught together, and why "learn text objects" is advice that pays twice. Text objects make your edits atomic, and atomic edits are what dot can replay.
Same for deletion. Don't press x eleven times — that gives dot one character to work with. Use dw, d$, di(. One sentence, one change, repeatable.
Dot plus a search
Now combine it with n.
Search /foo and press Enter. You're on the first hit. Do ciw, type bar, Escape. Press n for the next hit. Press ..
Now the loop is just n . n . — two keys per replacement, and you see each one before you accept it. This is the closest thing Vim has to a party trick, and it's a genuine part of the daily job.
Why it's the best one
Most editors have a repeat. Yours probably has a "redo last action" bound to something. It repeats a keystroke or a menu command.
Dot is different because Vim's changes are sentences, so dot repeats meaning, not motions. ciw doesn't replay "delete four characters" — it replays "change whatever word I'm on now", which is a different four characters at every site. The command adapts to where you are.
That's what makes it compose with movement. Go anywhere, dot, go anywhere else, dot. The edit follows you.
Learn it right after text objects
Dot is worthless until your edits are atomic, and atomic edits mean text objects. That's the order: learn ciw first, then dot, and the two together are most of what "being fast in Vim" actually means.
This kata teaches the pair — one change, then dot, in your browser. Par is six keystrokes. See if you can hit it.