|
vi editor command summary |
|
|
|
|
Friday, 24 July 2009 14:29 |
|
Starting vi
|
Command |
Description |
|
vi file |
start at line 1 of file |
|
vi +n file |
start at line n of file |
|
vi + file |
start at last line of file |
|
vi +/pattern file |
start at pattern in file |
|
vi -r file |
recover file after a system crash |
Saving files and quitting vi
|
Command |
Description |
|
:e file |
edit file (save current file with :w first) |
|
:w |
save (write out) the file being edited |
|
:w file |
save as file |
|
:w! file |
save as an existing file |
|
:q |
quit vi |
|
:wq |
save the file and quit vi |
|
:x |
save the file if it has changed and quit vi |
|
:q! |
quit vi without saving changes |
Moving the cursor
|
Keys pressed |
Effect |
|
h |
left one character |
|
l or <Space> |
right one character |
|
k |
up one line |
|
j or <Enter> |
down one line |
|
b |
left one word |
|
w |
right one word |
|
( |
start of sentence |
|
) |
end of sentence |
|
{ |
start of paragraph |
|
} |
end of paragraph |
|
1G |
top of file |
|
nG |
line n |
|
G |
end of file |
|
<Ctrl>W |
first character of insertion |
|
<Ctrl>U |
up ½ screen |
|
<Ctrl>D |
down ½ screen |
|
<Ctrl>B |
up one screen |
|
<Ctrl>F |
down one screen |
Inserting text
|
Keys pressed |
Text inserted |
|
a |
after the cursor |
|
A |
after last character on the line |
|
i |
before the cursor |
|
I |
before first character on the line |
|
o |
open line below current line |
|
O |
open line above current line |
Changing and replacing text
|
Keys pressed |
Text changed or replaced |
|
cw |
word |
|
3cw |
three words |
|
cc |
current line |
|
5cc |
five lines |
|
r |
current character only |
|
R |
current character and those to its right |
|
s |
current character |
|
S |
current line |
|
~ |
switch between lowercase and uppercase |
Deleting text
|
Keys pressed |
Text deleted |
|
x |
character under cursor |
|
12x |
12 characters |
|
X |
character to left of cursor |
|
dw |
word |
|
3dw |
three words |
|
d0 |
to beginning of line |
|
d$ |
to end of line |
|
dd |
current line |
|
5dd |
five lines |
|
d{ |
to beginning of paragraph |
|
d} |
to end of paragraph |
|
:1,. d |
to beginning of file |
|
:.,$ d |
to end of file |
|
:1,$ d |
whole file |
Using markers and buffers
|
Command |
Description |
|
mf |
set marker named ``f'' |
|
`f |
go to marker ``f'' |
|
´f |
go to start of line containing marker ``f'' |
|
"s12yy |
copy 12 lines into buffer ``s'' |
|
"ty} |
copy text from cursor to end of paragraph into buffer ``t'' |
|
"ly1G |
copy text from cursor to top of file into buffer ``l'' |
|
"kd`f |
cut text from cursor up to marker ``f'' into buffer ``k'' |
|
"kp |
paste buffer ``k'' into text |
Searching for text
|
Search |
Finds |
|
/and |
next occurrence of ``and'', for example, ``and'', ``stand'', ``grand'' |
|
?and |
previous occurrence of ``and'' |
|
/^The |
next line that starts with ``The'', for example, ``The'', ``Then'', ``There'' |
|
/^The\> |
next line that starts with the word ``The'' |
|
/end$ |
next line that ends with ``end'' |
|
/[bB]ox |
next occurrence of ``box'' or ``Box'' |
|
n |
repeat the most recent search, in the same direction |
|
N |
repeat the most recent search, in the opposite direction |
Searching for and replacing text
|
Command |
Description |
|
:s/pear/peach/g |
replace all occurrences of ``pear'' with ``peach'' on current line |
|
:/orange/s//lemon/g |
change all occurrences of ``orange'' into ``lemon'' on next line containing ``orange'' |
|
:.,$/\<file/directory/g |
replace all words starting with ``file'' by ``directory'' on every line from current line onward, for example, ``filename'' becomes ``directoryname'' |
|
:g/one/s//1/g |
replace every occurrence of ``one'' with 1, for example, ``oneself'' becomes ``1self'', ``someone'' becomes ``some1'' |
Matching patterns of text
|
Expression |
Matches |
|
. |
any single character |
 |
zero or more of the previous expression |
. |
zero or more arbitrary characters |
|
\< |
beginning of a word |
|
\> |
end of a word |
|
\ |
quote a special character |
\ |
the character `` '' |
|
^ |
beginning of a line |
|
$ |
end of a line |
|
[set] |
one character from a set of characters |
|
[XYZ] |
one of the characters ``X'', ``Y'', or ``Z'' |
|
[[:upper:]][[:lower:]]* |
one uppercase character followed by any number of lowercase characters |
|
[^set] |
one character not from a set of characters |
|
[^XYZ[:digit:]] |
any character except ``X'', ``Y'', ``Z'', or a numeric digit |
Options to the :set command
|
Option |
Effect |
|
all |
list settings of all options |
|
ignorecase |
ignore case in searches |
|
list |
display <Tab> and end-of-line characters |
|
mesg |
display messages sent to your terminal |
|
nowrapscan |
prevent searches from wrapping round the end or beginning of a file |
|
number |
display line numbers |
|
report=5 |
warn if five or more lines are changed by command |
|
term=ansi |
set terminal type to ``ansi'' |
|
terse |
shorten error messages |
|
warn |
display ``[No write since last change]'' on shell escape if file has not been saved |
|