Thursday, July 17, 2008

vi Quick Reference

MOVEMENT (lines - ends at ; sentence - ends at puncuation-space; section - ends at )
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 () {} []
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
n>m indent n lines (m is movement)
n. repeat last command
U undo changes on current line
u undo last command
J join end of line with next line (at )
:rf insert text from external file f
^G show status