Cursor movement h move left j move down k move up l move right w jump by start of words (punctuation considered words) W jump by words (spaces separate words) e jump to end of words (punctuation considered words) E jump to end of words (no punctuation) b jump backward by words (punctuation considered words) B jump backward by words (no punctuation) 0 (zero) start of line ^ first non-blank character of line $ end of line G Go To command (prefix with number Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines. Insert Mode Inserting/Appending text i start insert mode at cursor I insert at the beginning of the line a append after the cursor A append at the end of the line o open (append) blank line below current line (no need to press return) O open blank line above current line ea append at end of word Esc exit insert mode Editing r replace a single character (does not use insert mode) J join line below to the current one cc change (replace) an entire line cw change (replace) to the end of word c$ change (replace) to the end of line s delete character at cursor and subsitute text S delete line at cursor and substitute text (same as cc) xp transpose two letters (delete and paste, technically) u undo . repeat last command Marking text (visual mode) v start visual mode, mark lines, then do command (such as y-yank) V start Linewise visual mode o move to other end of marked area Ctrl+v start visual block mode O move to Other corner of block aw mark a word ab a () block (with braces) aB a {} block (with brackets) ib inner () block iB inner {} block Esc exit visual mode Visual commands > shift right < shift left y yank (copy) marked text d delete marked text ~ switch case Cut and Paste yy yank (copy) a line 2yy yank 2 lines yw yank word y$ yank to end of line p put (paste) the clipboard after cursor P put (paste) before cursor dd delete (cut) a line dw delete (cut) the current word x delete (cut) current character Exiting :w write (save) the file, but don't exit :wq write (save) and quit :q quit (fails if anything has changed) :q! quit and throw away changes Search/Replace /pattern search for pattern ?pattern search backward for pattern n repeat search in same direction N repeat search in opposite direction :%s/old/new/g replace all old with new throughout file :%s/old/new/gc replace all old with new throughout file with confirmations Working with multiple files :e filename Edit a file in a new buffer :bnext go to next buffer (or :bn) :bprev go to previous buffer (of :bp) :bd delete a buffer (close a file) :sp filename Open a file in a new buffer and split window ctrl+ws Split windows ctrl+ww switch between windows ctrl+wq Quit a window ctrl+wv Split windows vertically