Vi Quick Reference http://www.sfu.ca/-yzhang/linux MOVEMENT (lines-ends at <CR>;sentence-ends at puncuation-space;section-ends at <EOF>) By Character Marking Position on Screen mp mark current position as p (a..Z) move to mark position p 'p move to first non-whitespace on line w/mark p h Miscellaneous Movement fm forward to character m Fm backward to character m By Line tm forward to character before m nG to line n Tm backward to character after m 0,S first,last position on line W move to next word (stops at puncuation) A or first non-whitespace char on line W move to next word (skips punctuation) +, first character on next,prev line b move to previous word(stops at punctuation) B move to previous word(skips punctuation) By Screen e end of word(puncuation not part of word) AF.AB scroll foward,back one full screen E end of word(punctuation part of word) D.U scroll forward,back half a screen ),( next,previous sentence E,AY show one more line at bottom,top 小, next,previous section L go to the bottom of the screen },{ next,previous paragraph Z position line with cursor at top % goto matching parenthesis (){[ v position line with cursor at middle 竹 position line with cursor at EDITING TEXT Entering Text Searching and Replacing a append after cursor w search forward for w A or Sa append at end of line ?w search backward for w i insert before cursor /w/+n search forward for w and move down n lines Ior i insert at beginning of line repeat search(forward) 0 open line below cursor N repeat search(backward) 0 open line above cursor cm change text (m is movement) :s/old/new replace next occurence of old with new :s/old/newlg replace all occurences on the line Cut,Copy,Paste(Working w/Buffers) :x,ys/old/new/g replace all ocurrences from line x to y dm delete (m is movement) %s/old/new/g replace all occurrences in file dd delete line %s/old/new/ge same as above,with confirmation D or ds delete to end of line r delete char under cursor Miscellaneous X delete char before cursor > indent n lines(m is movement) ym yank to buffer (m is movement) n<m un-indent left n lines(m is movement) yy or Y yank to buffer current line 。 repeat last command p paste from buffer after cursor U undo changes on current line P paste from buffer before cursor u undo last command “bdd cut line into named buffer b (a..z) J join end of line with next line (at <cr>) “bp paste from named buffer b :rf insert text from external file f AG show statusMOVEMENT (lines - ends at <CR>; sentence - ends at puncuation-space; section - ends at <EOF>) By Character By Line nG to line n 0, $ first, last position on line ^ or _ first non-whitespace char on line +, - first character on next, prev line By Screen ^F, ^B scroll foward, back one full screen ^D, ^U scroll forward, back half a screen ^E, ^Y show one more line at bottom, top L go to the bottom of the screen z¿ position line with cursor at top z. position line with cursor at middle z- position line with cursor at Marking Position on Screen mp mark current position as p (a..z) `p move to mark position p 'p move to first non-whitespace on line w/mark p Miscellaneous Movement fm forward to character m Fm backward to character m tm forward to character before m Tm backward to character after m w move to next word (stops at puncuation) W move to next word (skips punctuation) b move to previous word (stops at punctuation) B move to previous word (skips punctuation) e end of word (puncuation not part of word) E end of word (punctuation part of word) ), ( next, previous sentence ]], [[ next, previous section }, { next, previous paragraph % goto matching parenthesis () {} [] EDITING TEXT Entering Text a append after cursor A or $a append at end of line i insert before cursor I or _i insert at beginning of line o open line below cursor O open line above cursor cm change text (m is movement) Cut, Copy, Paste (Working w/Buffers) dm delete (m is movement) dd delete line D or d$ delete to end of line x delete char under cursor X delete char before cursor ym yank to buffer (m is movement) yy or Y yank to buffer current line p paste from buffer after cursor P paste from buffer before cursor “bdd cut line into named buffer b (a..z) “bp paste from named buffer b Searching and Replacing /w search forward for w ?w search backward for w /w/+n search forward for w and move down n lines n repeat search (forward) N repeat search (backward) :s/old/new replace next occurence of old with new :s/old/new/g replace all occurences on the line :x,ys/old/new/g replace all ocurrences from line x to y :%s/old/new/g replace all occurrences in file :%s/old/new/gc same as above, with confirmation Miscellaneous n>m indent n lines (m is movement) n<m un-indent left n lines (m is movement) . repeat last command U undo changes on current line u undo last command J join end of line with next line (at <cr>) :rf insert text from external file f ^G show status Vi Quick Reference http://www.sfu.ca/~yzhang/linux h j l k hjkl