General Startup
”’To use vi:”’ |
vi filename |
”’To exit vi and save changes:”’ |
:wq |
”’To exit vi and save changes:”’ |
😡 |
”’To exit vi without saving changes:”’ |
:q! |
”’To enter vi command mode:”’ |
[esc] |
Counts
A number preceding any vi command tells vi to repeat that command that many times.
Cursor Movement
h |
move left (backspace) |
j |
move down |
k |
move up |
l |
move right (spacebar) |
[return] |
move to the beginning of the next line |
$ |
last column on the current line |
0 |
move cursor to the first column on the current line |
^ |
move cursor to first nonblank column on the current line |
w |
move to the beginning of the next word or punctuation mark |
W |
move past the next space |
b |
move to the beginning of the previous word or punctuation mark |
B |
move to the beginning of the previous word, ignores punctuation |
e |
end of next word or punctuation mark |
E |
end of next word, ignoring punctuation |
H |
move cursor to the top of the screen |
M |
move cursor to the middle of the screen |
L |
move cursor to the bottom of the screen |
Screen Movement
G |
move to the last line in the file |
xG |
move to line x |
z+ |
move current line to top of screen |
z |
move current line to the middle of screen |
z- |
move current line to the bottom of screen |
^F |
move forward one screen |
^B |
move backward one line |
^D |
move forward one half screen |
^U |
move backward one half screen |
^R |
redraw screen (does not work with VT100 type terminals) |
^L |
redraw screen (does not work with Televideo terminals) |
Inserting
r |
replace character under cursor with next character typed |
R |
keep replacing character until [esc] is hit |
i |
insert before cursor |
a |
append after cursor |
A |
append at end of line |
O |
open line above cursor and enter append mode |
Deleting
x |
delete character under cursor |
dd |
delete line under cursor |
dw |
delete word under cursor |
db |
delete word before cursor |
Copying Code
yy |
(yank)’copies’ line which may then be put by the p(put) command. Precede with a count for multiple lines. |
Put Command
brings back previous deletion or yank of lines, words, or characters
P |
bring back before cursor |
p |
bring back after cursor |
Find Commands
? |
finds a word going backwards |
/ |
finds a word going forwards |
f |
finds a character on the line under the cursor going forward |
F |
finds a character on the line under the cursor going backwards |
t |
find a character on the current line going forward and stop one character before it |
T |
find a character on the current line going backward and stop one character before it |
; |
repeat last f, F, t, T |
Miscellaneous Commands
. |
repeat last command |
u |
undoes last command issued |
U |
undoes all commands on one line |
xp |
deletes first character and inserts after second (swap) |
J |
join current line with the next line |
^G |
display current line number |
% |
if at one parenthesis, will jump to its mate |
mx |
mark current line with character x |
‘x |
find line marked with character x |
”’NOTE:”’ Marks are internal and not written to the file.
Line Editor Mode
Any commands form the line editor ”’ex”’ can be issued upon entering line mode.
To enter: type ‘:’ |
To exit: press [return] or [esc] |
Substitution
:#,#s/old/new/g
# |
line number range |
old |
pattern to replace |
new |
pattern to insert |
g |
optional key for global substitution (multiple occurences of old on the same line will not be replace without this) |
Reading Files
copies (reads) filename after cursor in file currently editing
Write File
:w |
saves the current file without quitting |
Moving
:# |
move to line # |
:$ |
move to last line of file |
Shell Escape
executes ‘cmd’ as a shell command.
vim是数一数二的编辑器
Very useful