A quick and dirty Vim cheatsheet.

# Vim Cheatsheet

To open a file in Vim:

    vim <filename>

| Navigation |                                                        |
|------------|--------------------------------------------------------|
| `h`        | move one character left                                |
| `j`        | move one row down                                      |
| `k`        | move one row up                                        |
| `l`        | move one character right                               |
| `w`        | move to beginning of next word                         |
| `b`        | move to beginning of previous word                     |
| `e`        | move to end of word                                    |
| `W`        | move to beginning of next word after a whitespace      |
| `B`        | move to beginning of previous word before a whitespace |
| `E`        | move to end of word before a whitespace                |

**All the above movements can be preceded by a count; e.g. 4j will move down 4 lines.**

| Navigation |                                                                          |
|------------|--------------------------------------------------------------------------|
| `0`        | move to beginning of line                                                |
| `$`        | move to end of line                                                      |
| `^`        | move to first non-blank char of the line                                 |
| `_`        | same as above, but can take a count to go to a different line            |
| `g_`       | move to last non-blank char of the line (can also take a count as above) |
|            |                                                                          |
| `gg`       | move to first line                                                       |
| `G`        | move to last line                                                        |
| `nG`       | move to n'th line of file (where n is a number)                          |
|            |                                                                          |
| `H`        | move to top of screen                                                    |
| `M`        | move to middle of screen                                                 |
| `L`        | move to bottom of screen                                                 |
|            |                                                                          |
| `z.`       | put the line with the cursor at the center                               |
| `zt`       | put the line with the cursor at the top                                  |
| `zb`       | put the line with the cursor at the bottom of the screen                 |
|            |                                                                          |
| `Ctrl-D`   | move half-page down                                                      |
| `Ctrl-U`   | move half-page up                                                        |
| `Ctrl-B`   | page up                                                                  |
| `Ctrl-F`   | page down                                                                |
| `Ctrl-o`   | jump to last cursor position                                             |
| `Ctrl-i`   | jump to next cursor position                                             |
|            |                                                                          |
| `n`        | next matching search pattern                                             |
| `N`        | previous matching search pattern                                         |
| `*`        | next word under cursor                                                   |
| `#`        | previous word under cursor                                               |
| `g*`       | next matching search pattern under cursor                                |
| `g#`       | previous matching search pattern under cursor                            |
|            |                                                                          |
| `%`        | jump to matching bracket { } \[ \] \( \)                                 |

| Search |                                                                      |
|--------|----------------------------------------------------------------------|
| `/`    | search for a pattern which will take you to the next occurrence.     |
| `?`    | search for a pattern which will take you to the previous occurrence. |
| `n`    | for next match in forward                                            |
| `N`    | for previous match in backward                                       |

| Insert / Delete |                                             |
|-----------------|---------------------------------------------|
| `I`             | Insert at start                             |
| `A`             | Append at end                               |
| `D`             | Delete to end of line                       |
| `;`             | Clear current line, to insert mode: S       |
| `o`             | Insert new line below                       |
| `O`             | Insert new line above                       |
| `x`             | Delete                                      |
| `X`             | Backspace X                                 |
| `r`             | Replace under cursor                        |
| `d`             | Delete word (like d2w for deleting 2 words) |

| Copy / Paste |                                |
|--------------|--------------------------------|
| `yy`         | Copy current line              |
| `p`          | Paste copied text after cursor |

|          Comments          |           |
|----------------------------|-----------|
| `CTRL+V (select lines) I#` | Comment   |
| `CTRL+V (select lines) X`  | Uncomment |

|     Misc    |                   |
|-------------|-------------------|
| `.`         | repeat command    |
| `u`         | undo              |
| `CTRL+R`    | redo              |
| `CTRL+P`    | autocomplete word |
| `:e [file]` | open file         |