Summary of VI Commands
Starting
Stopping
Recovering After System Failure
Controlling the Display
Moving the Cursor
Moving Through the Editing Buffer
Searching for a Pattern
Special Characters to Use in Regular Expressions
Line Numbers
Inserting
Making Changes
Replacing a Pattern
Undoing or Repeating a Change
Controlling the Length of Lines
Deleting
Copying the Last Deletion
Copying and Moving Lines
Executing Shell Commands
Reading Data
Using Shell Commands to Process Data
Writing Data
Changing the File While Editing
Abbreviations
Starting
vi /filename/.....start vi, edit specified file
vi -R /filename/..start vi read-only, edit specified file
view /filename/...start vi read-only, edit specefied file
Stopping
:q!...............stop without saving data
zz................save data and stop
:wq...............save data and stop
:x................save data and stop
Recovering After System Failure
vi -r .............display names of files that can be recovered
vi -r /filename/...start vi, recover specified file
Controlling the Display
^L................redisplay the current screen
:set number ......display internal line numbers
:set nonumber.....do not display internal line numbers
Moving the Cursor
h.................move cursor one position left
j.................move cursor one position down
k.................move cursor one position up
l.................move cursor one position right
LEFT..............move cursor one position left
DOWN..............move cursor one position down
UP................move cursor one position up
RIGHT.............move cursor one position right
BACKSPACE.........move cursor one position left
SPACE.............move cursor one position right
-.................move cursor to beginning of previous line
+.................move cursor to beginning of next line
RETURN............move cursor to beginning of next line
O.................move cursor to begining of current line
$.................move cursor to end of current line
^.................move cursor to first non-space/tab in current line
w.................move cursor forward to first character of next word
e.................move cursor forward to last character of next word
b.................move cursor backward to first character of previous word
W.................same as w; ignore punctuation
E.................same as e; ignore punctuation
B.................same as b; ignore punctuation
).................move forward to next sentence beginning
(.................move backward to previous sentence beginning
}.................move forward to next paragraph beginning
{.................move backward to previous paragraph beginning
H.................move cursor to top line
M.................move cursor to middle line
L.................move cursor to last line
Moving Through the Editing Buffer
^F................move down(forward) one screenful
^B................move up(backward) one screenful
n^F...............move down n screenfuls
n^B...............move up n screenfuls
^D................move down a half screenful
^U................move up a half a screenful
n^D...............move down n lines
n^U...............move up n lines
Searching for a Pattern
/rexp.............search forward for specified regular expression
/.................repeat forward search for previous pattern
?rexp.............search backward for specified regular expression
?.................repeat backward search for previous pattern
n.................repeat last / or ? command, same direction
N.................repeat last / or ? ? command, opposite direction
Special Characters to Use in Regular Expressions
/./...............match any single character except newline
*.................match zero or more of the preceding characters
^.................match the beginning of a line
$.................match the end of a line
/<................match the beginning of a word
/>................match the end of a word
[]................match one of the enclosed characters
[^]...............match any character taht is not enclosed
\.................interpret the following symbol literally
Line Numbers
nG................jump to line number n
1G................jump to first line in editing buffer
G.................jump to last line in editing buffer
:map g1G..........define macro so g will be the same as 1G
Inserting
i.................change to insert mode: insert before cursor position
a.................change to insert mode: insert after cursor position
I.................change to insert mode: insert at start of current line
A.................change to insert mode: insert at end of current line
o.................change to insert mode: open below current line
O.................change to insert mode: open above current line
ESCAPE............leave insert mode, change to command mode
Making Changes
r.................replace exactly 1 character (do not enter input mode)
R.................replace by typing over
s.................replace 1 character by insertion
C.................replace from cursor to end of line by insertion
cc................replace entire current line by insertion
S.................replace entire current line by insertion
cmove.............replace from cursor to move by insertion
~.................change the case of a letter
Replacing a Pattern
:s/pattern/replace/.............substitute, current line
:lines/pattern/replace/ ........substitute, specified line
:line, lines/pattern/replace/..substitute, specified range
:%s/pattern/replace/...........substitute, all lines
Undoing or Repeating a Change
u.................undo last command that modified the editing buffer
U.................restore current line
/./...............repeat last command that modified the editing buffer
Controlling the Length of Lines
rReturn...........replace a character with a newline
J.................join lines
:set wm=n.........auto line break within n positions of right margin
Deleting
x.................delete character at cursor
X.................delete character to left of cursor
D.................delete from cursor to end of line
dd................delete entire current line
dmove .............delete from cursor to move
dG................delete from current line to end of editing buffer
d1G...............delete from current line to start of editing buffer
:/lined/..........delete specified line
:/line/, /lined/..delete specified range
Copying the Last Deletion
P.................copy buffer; insert after/below cursor
p.................copy buffer; insert before/above cursor
xp................transpose two characters
deep..............transpose two words(start to the left of first word)
ddp...............transpose two lines
Copying and Moving Lines
:linecotarget.........copy specified line; insert below target
:line, linecotarget...copy specified range; inster below target
:linemtarget..........move specified line; insert below target
:line,linemtarget move.specified range; insert below target
Executing Shell Commands
:!command...........pause vi, execute specified shell command
:!!.................pause vi, execute previous shell command
:sh.................pause vi, start a shell
:!csh ...............pause vi, start a new C-Shell
Reading Data
:liner file .........insert contents of file after specified line
:r file..............insert contents of file after current line
:liner !command......insert output of command after specified line
:r !command .........insert output of command after current line
:r !look pattern.....insert words that begin with specified pattern
Using Shell Commands to Process Data
n!!command...........execute command on n lines
!move command........execute command from cursor to move
!movefmt.............format lines from cursor to move
Writing Data
:w...................write data to original file
:w file..............write data to specified file
:w>> file............append data to specified file
Changing the File While Editing
:e file..............edit the specified file
:e! file.............edit the specified file, omit automatic check
Abbreviations
:ab short long....set short as an abbreviation for long
:ab...............display current abbreviations
:una short........cancel abbreviation short