Appendix B
vi commands
The following tables contain all the basic vi commands.
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
|
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003