The following table provides a convenient reference for basic vi commands.
Command | Meaning |
|---|---|
Starting vi | |
vi filename | Open or create file |
vi | Open new file to be named later |
vi -r filename | Recover crashed file |
view filename | Open file read-only |
Cursor Commands |
|
h | Move left one character |
j | Move down one line |
k | Move up one line |
l | Move right one character |
w | Move right one word |
W | Move right one word (past punctuation) |
b | Move left one word |
B | Move left one word (past punctuation) |
e | Move to end of current word |
Return | Move down one line |
Back Space | Move left one character |
Space Bar | Move right one character |
H | Move to top of screen |
M | Move to middle of screen |
L | Move to bottom of screen |
Ctrl-F | Page forward one screen |
Ctrl-D | Scroll forward one-half screen |
Ctrl-B | Page backward one screen |
Ctrl-U | Scroll backward one-half screen |
Inserting Characters and Lines | |
a | Insert characters to right of cursor |
A | Insert characters at end of line |
i | Insert characters to left of cursor |
I | Insert characters at beginning of line |
o | Insert line below cursor |
O | Insert line above cursor |
Changing Text | |
cw | Change word (or part of word) to right of cursor |
cc | Change line |
C | Change from cursor to end of line |
s | Substitute string for character(s) from cursor forward |
r | Replace character at cursor with one other character |
r Return | Break line |
J | Join current line and line below |
xp | Transpose character at cursor and character to right |
~ | Change case of letter (upper or lower) |
u | Undo previous command |
U | Undo all changes to current line |
:u | Undo previous last-line command |
Deleting Text | |
x | Delete character at the cursor |
X | Delete character to the left of the cursor |
dw | Delete word (or part of word to right of cursor) |
dd | Delete line containing the cursor |
D | Delete part of line to right of cursor |
dG | Delete to end of file |
d1G | Delete from beginning of file to cursor |
:5,10 d | Delete lines 5-10 |
Copying and Moving Text | |
yy | Yank or copy line |
Y | Yank or copy line |
p | Put yanked or deleted line below current line |
P | Put yanked or deleted line above current line |
:1,2 co 3 | Copy lines 1-2 and put after line 3 |
:4,5 m 6 | Move lines 4-5 and put after line 6 |
Setting Line Numbers | |
:set nu | Show line numbers |
:set nonu | Hide line numbers |
Setting Case-sensitivity | |
:set ic | Searches should ignore case |
:set noic | Searches should be case-sensitive |
Finding a Line | |
G | Go to last line of file |
1G | Go to first line of file |
21G | Go to line 21 |
Searching and Replacing | |
/string | Search for string |
?string | Search backward for string |
n | Find next occurrence of string in search direction |
N | Find previous occurrence of string in search direction |
:g/search/s//replace/g | Search and replace |
Clearing the Screen | |
Ctrl-L | Clear (refresh) scrambled screen |
Inserting a File into a File | |
:r filename | Insert (read) file after cursor |
:34 r filename | Insert file after line 34 |
Saving and Quitting | |
:w | Save changes (write buffer) |
:w filename | Write buffer to named file |
:wq | Save changes and quit vi |
ZZ | Save changes and quit vi |
:q! | Quit without saving changes |
Copyright 1997 Sun Microsystems, Inc. All rights reserved.
Comments on: Solaris Advanced User's Guide