A list of vim key bindings, in approximate learning order for productivity. Highly opinionated.

Core movement and editing

You quickly get bored of pressing j and k a lot. Try these instead:

You quickly get bored of pressing h and l a lot. Try these instead:

W and B are the same as w and b but have a looser definition of what a word is.


This is three words and one WORD. A programmer is more interested in WORDS.

When C-d is too coarse and j is too fine, try:

Editing text

Try a as an alternative to i

Instead of going to the end of a line, entering insert mode, and adding a new line, try:

Sometimes it's useful to replace a single character.

Or fix the end of a line

As programmers, it's often useful to fix case issues quickly

Copy, cut, and paste

Instead of using your terminal to copy/paste, use vim

Try combing x and p to quickly swap two characters. Useful for tpyos.

Or start your searching in the opposite direction:


Try these out to get a feel for them.

Shape your selections using the same movement keys you already know.

Use y, d, and p to yank, delete, and paste selections.

It also works with r (replace entire selection with spaces**.

Move movement keys

It's useful to jump to the top/bottom of a file quickly

And jump to a specific line number

Not strictly movement, but very useful

More editing keys

Everyone makes mistakes


vim's change is very flexible and will introduce the idea of combining actions with motions.

Try making a selection, and pressing c, to change everything you have selected.

You can also change i inside something

These don't just work with c, they also work with d and y.

And even v


This works on a selection or just a single line.

Repeating commands

Prefix a command with a number to repeat it that many times

Use . to repeat the last character command.


You can also do this on a selection.


Multi-line insert

Working with buffers


Here are some good-to-know-but-I-don't-personally-use-them-all-the-time keys