Essential commands for everyday editing
| i | Insert before cursor |
| I | Insert at line start |
| a | Append after cursor |
| A | Append at line end |
| o | Open new line below |
| O | Open new line above |
| v | Visual (character) |
| V | Visual (line) |
| Ctrl-v | Visual (block) |
| Esc | Return to Normal |
| h j k l | ← ↓ ↑ → |
| w / b | Next / prev word |
| W / B | Next / prev WORD |
| e / ge | End of next / prev word |
| 0 / ^ | Line start / first non-blank |
| $ | Line end |
| gg / G | File start / end |
| { / } | Prev / next paragraph |
| Ctrl-d / Ctrl-u | Scroll half page |
| % | Jump to matching bracket |
| x | Delete char under cursor |
| dd | Delete line |
| D | Delete to end of line |
| cc | Change (replace) line |
| C | Change to end of line |
| yy | Yank (copy) line |
| p / P | Paste after / before |
| u / Ctrl-r | Undo / redo |
| .` | Repeat last change |
| ~ | Toggle case |
| dw | Delete word |
| cw | Change word |
| yw | Yank word |
| diw | Delete inner word |
| ci" | Change inside quotes |
| da( | Delete around parens |
| yip | Yank inner paragraph |
| guw | Lowercase word |
| gUw | Uppercase word |
| >> / << | Indent / dedent line |
| /pattern | Search forward |
| ?pattern | Search backward |
| n / N | Next / prev match |
| * / # | Search word under cursor →/← |
| :%s/old/new/g | Replace all in file |
| :%s/old/new/gc | Replace with confirmation |
| :s/old/new/ | Replace on current line |
| :noh | Clear search highlight |
| :w | Save file |
| :q | Quit |
| :wq / ZZ | Save and quit |
| :q! | Quit without saving |
| :e file | Open file |
| :bn / :bp | Next / prev buffer |
| :ls | List buffers |
| :bd | Delete (close) buffer |
| Ctrl-w s | Horizontal split |
| Ctrl-w v | Vertical split |
| Ctrl-w w | Cycle windows |
| Ctrl-w h/j/k/l | Move between windows |
| Ctrl-w = | Equalize window sizes |
| Ctrl-w q | Close window |
| :tabnew | Open new tab |
| gt / gT | Next / prev tab |
| ma | Set mark a |
| `a | Jump to mark a |
| '' | Jump to last position |
| Ctrl-o / Ctrl-i | Older / newer jump |
| :n | Go to line n |
| H / M / L | Top / middle / bottom of screen |
| qa | Record macro into register a |
| q | Stop recording |
| @a | Play macro a |
| @@ | Repeat last macro |
| "ayy | Yank line into register a |
| "ap | Paste from register a |
| :reg | Show all registers |
| Ctrl-a / Ctrl-x | Increment / decrement number |
| J | Join line with next |
| gd | Go to local definition |
| K | Keyword lookup (man page) |
| :sort | Sort selected lines |
| :!cmd | Run shell command |
| gg=G | Auto-indent entire file |
| Ctrl-n | Autocomplete (insert mode) |