| Cursor Movement Commands: |
| (n) indicates a number, and is optional |
| (n)h | left (n) space(s) |
| (n)j | down (n) space(s) |
| (n)k | up (n) space(s) |
| (n)l | right (n) space(s) |
| (The arrow keys usually work also) |
| ^F | forward one screen |
| ^B | back one screen |
| ^D | down half screen |
| ^U | up half screen |
| (^ indicates control key; case does not matter) |
| H | beginning of top line of screen |
| M | beginning of middle line of screen |
| L | beginning of last line of screen |
| G | beginning of last line of file |
| (n)G | move to beginning of line (n) |
| 0 | (zero) beginning of line |
| $ | end of line |
| (n)w | forward (n) word(s) |
| (n)b | back (n) word(s) |
| e | end of word |
| | | |
| | | |
| Inserting Text: |
| i | insert text before the cursor |
| a | append text after the cursor (does not overwrite other text) |
| I | insert text at the beginning of the line |
| A | append text to the end of the line |
| r | replace the character under the cursor with the next character typed |
| R | Overwrite characters until the end of the line (or until escape is pressed to change command) |
| o | (alpha o) open new line after the current line to type text |
| O | (alpha O) open new line before the current line to type text |
| Deleting Text: |
| dd | deletes current line |
| (n)dd | deletes (n) line(s) |
| (n)dw | deletes (n) word(s) |
| D | deletes from cursor to end of line |
| x | deletes current character |
| (n)x | deletes (n) character(s) |
| X | deletes previous character |
| Change Commands: |
| (n)cc | changes (n) characters on line(s) until end of the line (or until escape is pressed) |
| cw | changes characters of word until end of the word (or until escape is pressed) |
| (n)cw | changes characters of the next (n) words |
| c$ | changes text to the end of the line |
| ct(x) | changes text to the letter (x) |
| C | changes remaining text on the current line (until stopped by escape key) |
| ~ | changes the case of the current character |
| J | joins the current line and the next line |
| u | undo the last command just done on this line |
| . | repeats last change |
| s | substitutes text for current character |
| S | substitutes text for current line |
| :s | substitutes new word(s) for old :<line nos effected> s/old/new/g |
| & | repeats last substitution (:s) command. |
| (n)yy | yanks (n) lines to buffer |
| y(n)w | yanks (n) words to buffer |
| p | puts yanked or deleted text after cursor |
| P | puts yanked or deleted text before cursor |
| File Manipulation: |
| :w (file) | writes changes to file (default is current file) |
| :wq | | writes changes to current file and quits edit session |
| :w! (file) | overwrites file (default is current file) |
| :q | | quits edit session w/no changes made |
| :q! | | quits edit session and discards changes |
| :n | | edits next file in argument list |
| :f (name) | changes name of current file to (name) |
| :r (file) | reads contents of file into current edit at the current cursor position (insert a file) |
| :!(command) | shell escape |
| :r!(command) | inserts result of shell command at cursor position |
| ZZ | write changes to current file and exit |