Disclaimer: This cheatsheet is made for me to use. The reason I have this public is so someone else find it useful.
| Command | Description |
|---|---|
| :w | write (save) the file, but don't exit |
| :w !sudo tee % | write out the current file using sudo |
| :wq or :x or ZZ | write (save) and quit |
| :q | quit (fails if there are unsaved changes) |
| :q! or ZQ | quit and throw away unsaved changes |
| :help keyword | open help for keyword |
| :o file | open file |
| :saveas file | save file as |
| :close | close current pane |
| h | move cursor left |
| j | move cursor down |
| k | move cursor up |
| l | move cursor right |
| H | move to top of screen |
| M | move to middle of screen |
| L | move to bottom of screen |
| r | replace a single character |
| J | join line below to the current one |
| cc | change (replace) entire line |
| cw | change (replace) to the start of the next word |
| ce | change (replace) to the end of the next word |
| cb | change (replace) to the start of the previous word |
| c0 | change (replace) to the start of the line |
| c$ | change (replace) to the end of the line |
| s | delete character and substitute text |
| S | delete line and substitute text (same as cc) |
| xp | transpose two letters (delete and paste) |
| . | repeat last command |
| u | undo |
| Ctrl + r | redo |
| yy | yank (copy) a line |
| 2yy | yank (copy) 2 lines |
| yw | yank (copy) the characters of the word from the cursor position to the start of the next word |
| y$ | yank (copy) to end of line |
| p | put (paste) the clipboard after cursor |
| P | put (paste) before cursor |
| dd | delete (cut) a line |
| 2dd | delete (cut) 2 lines |
| dw | delete (cut) the characters of the word from the cursor position to the start of the next word |
| D | delete (cut) to the end of the line |
| d$ | delete (cut) to the end of the line |
| d^ | delete (cut) to the first non-blank character of the line |
| d0 | delete (cut) to the begining of the line |
| x | delete (cut) character |
| :1,$d | delete all the lines |
| :sp file | open a file in a new buffer and split window |
| :vsp file | open a file in a new buffer and vertically split window |
| Ctrl + ws | split window |
| Ctrl + ww | switch windows |
| Ctrl + wq | quit a window |
| Ctrl + wv | split window vertically |
| Ctrl + wh | move cursor to the left window (vertical split) |
| Ctrl + wl | move cursor to the right window (vertical split) |
| Ctrl + wj | move cursor to the window below (horizontal split) |
| Ctrl + wk | move cursor to the window above (horizontal split) |
| :tabnew or :tabnew file | open a file in a new tab |
| Ctrl + wT | move the current split window into its own tab |
| gt or :tabnext or :tabn | move to the next tab |
| gT or :tabprev or :tabp | move to the previous tab |
| gt | move to tab |
| :tabmove | move current tab to the th position (indexed from 0) |
| :tabclose or :tabc | close the current tab and all its windows |
| :tabonly or :tabo | close all tabs except for the current one |
| :tabdo command | run the command on all tabs (e.g. :tabdo q - closes all opened tabs) |