Note: when envoking vi, do "vi filename" from the UNIX shell prompt. All commands are then seperated by a pressing of the <escape> key.
Command: | Meaning: |
a | Append text after cursor |
A | Append text at line's end |
i | Insert text before the cursor |
I | Insert text at the beginning of the line |
o | Open a new line, below the cursor |
O | Open a new line above the cursor |
h | Move left one character |
j | Move down one line |
k | Move up one line |
l | Move right (forward) one character |
w | Move right (forward) one word |
W | Move right one word (past punctuation) |
b | Move left (backward) one word |
B | Move left (backward) one word (past punctuation) |
e | Move to end of the current word |
<Return> | Move down one line |
H | Move to top of screen |
M | Move to middle of screen |
L | Move to bottom of the screen |
G | Go to the end of the file (last line) |
1G | Go to the first line of the file |
21G | Go to line 21 |
nG | Go to line 'n' |
<Control>-f | Page forward one screen |
<Control>-d | Scroll down one half screen |
<Control>-b | Page back one screen |
<Control>-u | Scroll up one half screen |
x | Delete the character at the cursor |
X | Delete character to the left of the cursor |
dw | Delete the word to the right of the cursor |
dd | Delete the whole line that the cursor is on |
D | Delete from the cursor to the end of the current line |
dG | Delete from the cursor to the end of the file |
d1G | Delete from the beginning of the file to the cursor |
:5,10d | Delete lines 5 through 10 |
cw | Change (replace) word at the cursor location |
cw# | Change (replace) the number of words indicated by '#' |
R | Change (replace) line |
C | Change from cursor to the end of the line |
s | Substitute string of characters from cursor forward |
r | Replace character at cursor with another character |
r <Return>
i <Return> |
Break line |
J | Join current line and line below |
xp | Transpose character at cursor and character to the right |
~ | Change case of letter (upper or lower) |
u | Undo previous command |
U | Undo all changes to current line |
:u | Undo previous changes to last line command |
yy | Yank (copy) the current line |
Y | Yank (copy) the current line |
p | Put yanked (or deleted) line below the current line |
P | Put yanked (or deleted) line above the current line |
:1,3 co 5 | Copy lines 1 through 3 and put them below line 5 |
:4,6 m 8 | Move lines 4 through 6 to line 8. |
:w | Save changes (write to file) |
:w new_filename | Save as a new_filename |
:wq | Save and quit |
:wq! | Forced write (even on files with no write access) and quit (owner only). |
zz | Save changes and quit vi |
:q! | Quit without saving changes |
:! cmd | execute cmd |
:e file | edit file |
:n | next file; when editting multiple files |
:r file | read the contents of file into editor |
:r! cmd | read output of cmd into text |
:se | displays currently set options |
:se all | displays all available options |
:set nu | Show line numbers |
:set nonu | Hide line numbers |
:set ic | Searches should ignore case |
:set noic | Searches should be case sensitive |
:set list | Turn of the display of invisible characters |
:set showmode | Turn on input mode identification |
:set noshowmode | Turn off input mode identification |
<Control>-l | Clear (refresh) scrambled screen |
/string | Search forward for string |
?string | Search backward for string |
n | Find next occurence of string in search direction |
N | Find previous occurence of string in search direction |
:s/old/new/g | Search and replace in the current line |
:%s/old/new/g | Search and replace globally (whole file) |
Other vi reference pages can be found at:
http://www.cis.udel.edu/~totten/vi/
http://www.hackensackhigh.org/viref.html
http://www.ungerhu.com/jxh/vi.html
http://www.kichwa.com/quik_ref/vi_ref.html