i = insert mode o = begin insert on new line R = overwrite mode ESC = Command mode : = Last Line Command mode u = undo the last action to thsi file Deletion Commands: x = Delete char under cursor dd = Delete line dw = delete to end of word d = current line and next d0 = delete to beginning of line D = delete to end of line d)/d( = delete to end/beginning of sentance d}/d{ = delete to end/beginning of paragraph ndd = delete next n lines rc = overwrite current char with c ~ = Change case . = repeat last command Navigation: 0/$ = beginning and end of line 1G/G = beginning and end of file nG = nth line in file H/M = beginning/middle of screen CTRL-F/B = Forwards/Backwards one page w/W = Next word b/B = Previous word / = find in file (forwards) /? = find in file (backwards) File and I/O Commands: :w = Save :wq = Save and quit ZZ = Save and quit :q! = Quit w/o saving :e = Edit another file :! = Shell command :r = insert a file into the current one Buffers commands: y_ = yank [_ = usual commands. e.g. 0 = beginning of current line, etc] Y = yank to end of current line p = put buffer contents in after current line p = put buffer contents in before current line "[a-z]y = yank text into buffer a-z "[a-z]p = put text from buffer a-z "[a-z]d = delete text and put into buffer a-z NB: The last three commands can be qualified as usual. e.g. y) = to end of sentance. Misc: When no text on line, use CTRL-T/D to use auto-indent feature. :s/foo/bar/igc = generalise query/replace Automatic Line Wrapping: :set wraplength=70 (or :set wl=70) :set wraplength=0 (to turn off) NB: This doesn't work in vim - use textwidth instead of wraplength To get a command that wraps the current paragraph ('q' in command mode): map q !}fmt^M (use ctrl-V ctrl-M to get ^M)