| Cursor control and position | Editing | ||
| h | Left | ||
| j | Down | ||
| k | Up | ||
| l (or spacebar) | Right | ||
| w | Forward one word | ||
| b | Back one word | ||
| e | End of word | ||
| ( | Beginning of current sentence | ||
| ) | Beginning of next sentence | ||
| { | Beginning of current paragraph | ||
| } | Beginning of next paragraph | ||
| [[ | Beginning of current section | ||
| ]] | Beginning of next section | A | Append to end of current line |
| 0 | Start of current line | i | Insert before cursor |
| $ | End of current line | I | Insert at beginning of line |
| ^ | First non-white character of current line | o | Open line above cursor |
| + or RETURN | First character of next line | O | Open line below cursor |
| – | First character of previous line | ESC | End of insert mode |
| n | | character n of current line | Ctrl-I | Insert a tab |
| H | Top line of current screen | Ctrl-T | Move to next tab position |
| M | Middle line of current screen | Backspace | Move back one character |
| L | Last line of current screen | Ctrl-U | Delete current line |
| nH | n lines after top line of current screen | Ctrl-V | Quote next character |
| nL | n lines before last line of current screen | Ctrl-W | Move back one word |
| Ctrl-F | Forward one screen | cw | Change word |
| Ctrl-B | Back one screen | cc | Change line |
| Ctrl-D | Down half a screen | C | Change from current position to end of line |
| Ctrl-U | Up half a screen | dd | Delete current line |
| Ctrl-E | Display another line at bottom of screen | ndd | Delete n lines |
| Ctrl-Y | Display another line at top of screen | D | Delete remainer of line |
| z RETURN | Redraw screen with cursor at top | dw | Delete word |
| z . | Redraw screen with cursor in middle | d} | Delete rest of paragraph |
| z – | Redraw screen with cursor at bottom | d^ | Delete back to start of line |
| Ctrl-L | Redraw screen without re-positioning | c/pat | Delete up to first occurance of pattern |
| Ctrl-R | Redraw screen without re-positioning | dn | Delete up to next occurance of pattern |
| /text | Search for text (forwards) | dfa | Delete up to and including a on current line |
| / | Repeat forward search | dta | Delete up to, but not including, a on current line |
| ?text | Search for text (backwards) | dL | Delete up to last line on screen |
| ? | Repeat previous search backwards | dG | Delete to end of file |
| n | Repeat previous search | J | Join two lines |
| N | Repeat previous search, but it opposite direction | p | Insert buffer after cursor |
| /text/+n | Go to line n after text | P | Insert buffer before cursor |
| ?text?-n | Go to line n before text | rx | Replace character with x |
| % | Find match of current parenthesis, brace, or bracket. | Rtext | Replace text beginning at cursor |
| Ctrl-G | Display line number of cursor | s | Substitute character |
| nG | Move cursor to line number n | ns | Substitute n characters |
| :n | Move cursor to line number n | S | Substitute entire line |
| G | Move to last line in file | u | Undo last change |
| U | Restore current line | ||
| x | Delete current cursor position | ||
| X | Delete back one character | ||
| nX | Delete previous n characters | ||
| . | Repeat last change | ||
| ~ | Reverse case | ||
| y | Copy current line to new buffer | ||
| yy | Copy current line | ||
| «xyy | Copy current line into buffer x | ||
| «Xd | Delete and append into buffer x | ||
| «xp | Put contents of buffer x | ||
| y]] | Copy up to next section heading | ||
| ye | Copy to end of word | ||
| File Handling | |||
| :w | Write file | ||
| :w! | Write file (ignoring warnings) | ||
| :w! file | Overwrite file (ignoring warnings) | ||
| :wq | Write file and quit | ||
| :q | Quit | ||
| :q! | Quit (even if changes not saved) | ||
| :w file | Write file as file, leaving original untouched | ||
| ZZ | Quit, only writing file if changed | ||
| 😡 | Quit, only writing file if changed | ||
| :n1,n2w file | Write lines n1 to n2 to file | ||
| :n1,n2w >> file | Append lines n1 to n2 to file | ||
| :e file2 | Edit file2 (current file becomes alternate file) | ||
| :e! | Reload file from disk (revert to previous saved version) | ||
| :e# | Edit alternate file | ||
| % | Display current filename | ||
| # | Display alternate filename | ||
| :n | Edit next file | ||
| :n! | Edit next file (ignoring warnings) | ||
| :n files | Specify new list of files | ||
| :r file | Insert file after cursor | ||
| :r !command | Run command, and insert output after current line | ||