This appendix gives the uses the editor makes of each
character. The characters are presented in their order in
the ASCII character set: Control characters come first,
then most special characters, then the digits, upper and
then lower case characters.
For each character we tell a meaning it has as a com-
mand and any meaning it has during an insert. If it has
only meaning as a command, then only this is discussed.
Section numbers in parentheses indicate where the character
is discussed; a `f' after the section number means that the
character is mentioned in a footnote.
^@ Not a command character. If typed as the
first character of an insertion it is
replaced with the last text inserted, and the
insert terminates. Only 128 characters are
saved from the last insert; if more charac-
ters were inserted the mechanism is not
available. A ^@ cannot be part of the file
due to the editor implementation (7.5f).
^A Unused.
^B Backward window. A count specifies repeti-
tion. Two lines of continuity are kept if
possible (2.1, 6.1, 7.2).
^C Unused.
^D As a command, scrolls down a half-window of
text. A count gives the number of (logical)
lines to scroll, and is remembered for future
^D and ^U commands (2.1, 7.2). During an
insert, backtabs over autoindent white space
at the beginning of a line (6.6, 7.5); this
white space cannot be backspaced over.
^E Exposes one more line below the current
screen in the file, leaving the cursor where
it is if possible. (Version 3 only.)
^F Forward window. A count specifies repeti-
tion. Two lines of continuity are kept if
possible (2.1, 6.1, 7.2).
^G Equivalent to :fCR, printing the current
file, whether it has been modified, the
current line number and the number of lines
in the file, and the percentage of the way
through the file that you are.
insert, eliminates the last input character,
backing over it but not erasing it; it
remains so you can see what you typed if you
wish to type something only slightly dif-
ferent (3.1, 7.5).
^I (TAB) Not a command character. When inserted it
prints as some number of spaces. When the
cursor is at a tab character it rests at the
last of the spaces which represent the tab.
The spacing of tabstops is controlled by the
tabstop option (4.1, 6.6).
^J (LF) Same as down arrow (see j).
^K Unused.
^L The ASCII formfeed character, this causes the
screen to be cleared and redrawn. This is
useful after a transmission error, if charac-
ters typed by a program other than the editor
scramble the screen, or after output is
stopped by an interrupt (5.4, 7.2f).
^M (CR) A carriage return advances to the next line,
at the first non-white position in the line.
Given a count, it advances that many lines
(2.3). During an insert, a CR causes the
insert to continue onto another line (3.1).
^N Same as down arrow (see j).
^O Unused.
^P Same as up arrow (see k).
^Q Not a command character. In input mode, ^Q
quotes the next character, the same as ^V,
except that some teletype drivers will eat
the ^Q so that the editor never sees it.
^R Redraws the current screen, eliminating logi-
cal lines not corresponding to physical lines
(lines with only a single @ character on
them). On hardcopy terminals in open mode,
retypes the current line (5.4, 7.2, 7.8).
^S Unused. Some teletype drivers use ^S to
suspend output until ^Qis
^T Not a command character. During an insert,
with autoindent set and at the beginning of
scrolls down. Counts work as they do for ^D,
and the previous scroll amount is common to
both. On a dumb terminal, ^U will often
necessitate clearing and redrawing the screen
further back in the file (2.1, 7.2).
^V Not a command character. In input mode,
quotes the next character so that it is pos-
sible to insert non-printing and special
characters into the file (4.2, 7.5).
^W Not a command character. During an insert,
backs up as b would in command mode; the
deleted characters remain on the display (see
^H) (7.5).
^X Unused.
^Y Exposes one more line above the current
screen, leaving the cursor where it is if
possible. (No mnemonic value for this key;
however, it is next to ^U which scrolls up a
bunch.) (Version 3 only.)
^Z If supported by the Unix system, stops the
editor, exiting to the top level shell. Same
as :stopCR. Otherwise, unused.
^[ (ESC) Cancels a partially formed command, such as a
z when no following character has yet been
given; terminates inputs on the last line
(read by commands such as : / and ?); ends
insertions of new text into the buffer. If
an ESC is given when quiescent in command
state, the editor rings the bell or flashes
the screen. You can thus hit ESC if you
don't know what is happening till the editor
rings the bell. If you don't know if you are
in insert mode you can type ESCa, and then
material to be input; the material will be
inserted correctly whether or not you were in
insert mode when you started (1.5, 3.1, 7.5).
^\ Unused.
^] Searches for the word which is after the cur-
sor as a tag. Equivalent to typing :ta, this
word, and then a CR. Mnemonically, this com-
mand is ``go right to'' (7.3).
^^ Equivalent to :e #CR, returning to the previ-
ous position in the last edited file, or
do not want to have to type the file name
again (7.3). (You have to do a :w before ^^
will work in this case. If you do not wish
to write the file you should do :e! #CR
instead.)
^_ Unused. Reserved as the command character
for the Tektronix 4025 and 4027 terminal.
SPACE Same as right arrow (see l).
! An operator, which processes lines from the
buffer with reformatting commands. Follow !
with the object to be processed, and then the
command name terminated by CR. Doubling !
and preceding it by a count causes count
lines to be filtered; otherwise the count is
passed on to the object after the !. Thus
2!}fmtCR reformats the next two paragraphs by
running them through the program fmt. If you
are working on LISP, the command !%grindCR,*
given at the beginning of a function, will
run the text of the function through the LISP
grinder (6.7, 7.3). To read a file or the
output of a command into the buffer use :r
(7.3). To simply execute a command use :!
(7.3).
" Precedes a named buffer specification. There
are named buffers 1-9 used for saving deleted
text and named buffers a-z into which you can
place text (4.3, 6.3)
# The macro character which, when followed by a
number, will substitute for a function key on
terminals without function keys (6.9). In
input mode, if this is your erase character,
it will delete the last character you typed
in input mode, and must be preceded with a \
to insert it, since it normally backs over
the last input character you gave.
$ Moves to the end of the current line. If you
:se listCR, then the end of each line will be
shown by printing a $ after the end of the
displayed text in the line. Given a count,
advances to the count'th following end of
line; thus 2$ advances to the end of the fol-
lowing line.
_________________________
*Both fmt and grind are Berkeley programs and may not
be present at all installations.
balances the parenthesis or brace at the
current cursor position.
& A synonym for :&CR, by analogy with the ex &
command.
' When followed by a ' returns to the previous
context at the beginning of a line. The pre-
vious context is set whenever the current
line is moved in a non-relative way. When
followed by a letter a-z, returns to the line
which was marked with this letter with a m
command, at the first non-white character in
the line. (2.2, 5.3). When used with an
operator such as d, the operation takes place
over complete lines; if you use `, the opera-
tion takes place from the exact marked place
to the current cursor position within the
line.
( Retreats to the beginning of a sentence, or
to the beginning of a LISP s-expression if
the lisp option is set. A sentence ends at a
. ! or ? which is followed by either the end
of a line or by two spaces. Any number of
closing ) ] " and ' characters may appear
after the . ! or ?, and before the spaces or
end of line. Sentences also begin at para-
graph and section boundaries (see { and [[
below). A count advances that many sentences
(4.2, 6.8).
) Advances to the beginning of a sentence. A
count repeats the effect. See ( above for
the definition of a sentence (4.2, 6.8).
* Unused.
+ Same as CR when used as a command.
, Reverse of the last f F t or T command, look-
ing the other way in the current line. Espe-
cially useful after hitting too many ; char-
acters. A count repeats the search.
- Retreats to the previous line at the first
non-white character. This is the inverse of
+ and RETURN. If the line moved to is not on
the screen, the screen is scrolled, or
cleared and redrawn if this is not possible.
If a large amount of scrolling would be
required the screen is also cleared and
. Repeats the last command which changed the
buffer. Especially useful when deleting
words or lines; you can delete some
words/lines and then hit . to delete more and
more words/lines. Given a count, it passes
it on to the command being repeated. Thus
after a 2dw, 3. deletes three words (3.3,
6.3, 7.2, 7.4).
/ Reads a string from the last line on the
screen, and scans forward for the next
occurrence of this string. The normal input
editing sequences may be used during the
input on the bottom line; an returns to com-
mand state without ever searching. The
search begins when you hit CR to terminate
the pattern; the cursor moves to the begin-
ning of the last line to indicate that the
search is in progress; the search may then be
terminated with a DEL or RUB, or by backspac-
ing when at the beginning of the bottom line,
returning the cursor to its initial position.
Searches normally wrap end-around to find a
string anywhere in the buffer.
When used with an operator the enclosed
region is normally affected. By mentioning
an offset from the line matched by the pat-
tern you can force whole lines to be
affected. To do this give a pattern with a
closing a closing / and then an offset +n or
-n.
To include the character / in the search
string, you must escape it with a preceding
\. A ^ at the beginning of the pattern
forces the match to occur at the beginning of
a line only; this speeds the search. A $ at
the end of the pattern forces the match to
occur at the end of a line only. More
extended pattern matching is available, see
section 7.4; unless you set nomagic in your
.exrc file you will have to preceed the char-
acters . [ * and ~ in the search pattern with
a \ to get them to work as you would naively
expect (1.5, 2,2, 6.1, 7.2, 7.4).
0 Moves to the first character on the current
line. Also used, in forming numbers, after
an initial 1-9.
: A prefix to a set of commands for file and
option manipulation and escapes to the sys-
tem. Input is given on the bottom line and
terminated with an CR, and the command then
executed. You can return to where you were
by hitting DEL or RUB if you hit : acciden-
tally (see primarily 6.2 and 7.3).
; Repeats the last single character find which
used f F t or T. A count iterates the basic
scan (4.1).
< An operator which shifts lines left one
shiftwidth, normally 8 spaces. Like all
operators, affects lines when repeated, as in
<<. Counts are passed through to the basic
object, thus 3<< shifts three lines (6.6,
7.2).
= Reindents line for LISP, as though they were
typed in with lisp and autoindent set (6.8).
> An operator which shifts lines right one
shiftwidth, normally 8 spaces. Affects lines
when repeated as in >>. Counts repeat the
basic object (6.6, 7.2).
? Scans backwards, the opposite of /. See the
/ description above for details on scanning
(2.2, 6.1, 7.4).
@ A macro character (6.9). If this is your
kill character, you must escape it with a \
to type it in during input mode, as it nor-
mally backs over the input you have given on
the current line (3.1, 3.4, 7.5).
A Appends at the end of line, a synonym for $a
(7.2).
B Backs up a word, where words are composed of
non-blank sequences, placing the cursor at
the beginning of the word. A count repeats
the effect (2.4).
C Changes the rest of the text on the current
line; a synonym for c$.
D Deletes the rest of the text on the current
line; a synonym for d$.
count repeats the effect.
F Finds a single following character, backwards
in the current line. A count repeats this
search that many times (4.1).
G Goes to the line number given as preceding
argument, or the end of the file if no
preceding count is given. The screen is
redrawn with the new current line in the
center if necessary (7.2).
H Home arrow. Homes the cursor to the top line
on the screen. If a count is given, then the
cursor is moved to the count'th line on the
screen. In any case the cursor is moved to
the first non-white character on the line.
If used as the target of an operator, full
lines are affected (2.3, 3.2).
I Inserts at the beginning of a line; a synonym
for ^i.
J Joins together lines, supplying appropriate
white space: one space between words, two
spaces after a ., and no spaces at all if the
first character of the joined on line is ).
A count causes that many lines to be joined
rather than the default two (6.5, 7.1f).
K Unused.
L Moves the cursor to the first non-white char-
acter of the last line on the screen. With a
count, to the first non-white of the count'th
line from the bottom. Operators affect whole
lines when used with L (2.3).
M Moves the cursor to the middle line on the
screen, at the first non-white position on
the line (2.3).
N Scans for the next match of the last pattern
given to / or ?, but in the reverse direc-
tion; this is the reverse of n.
O Opens a new line above the current line and
inputs text there up to an ESC. A count can
be used on dumb terminals to specify a number
of lines to be opened; this is generally
obsolete, as the slowopen option works better
(3.1).
the cursor. The text goes back as whole
lines above the cursor if it was deleted as
whole lines. Otherwise the text is inserted
between the characters before and at the cur-
sor. May be preceded by a named buffer
specification "x to retrieve the contents of
the buffer; buffers 1-9 contain deleted
material, buffers a-z are available for gen-
eral use (6.3).
Q Quits from vi to ex command mode. In this
mode, whole lines form commands, ending with
a RETURN. You can give all the : commands;
the editor supplies the : as a prompt (7.7).
R Replaces characters on the screen with char-
acters you type (overlay fashion). Ter-
minates with an ESC.
S Changes whole lines, a synonym for cc. A
count substitutes for that many lines. The
lines are saved in the numeric buffers, and
erased on the screen before the substitution
begins.
T Takes a single following character, locates
the character before the cursor in the
current line, and places the cursor just
after that character. A count repeats the
effect. Most useful with operators such as d
(4.1).
U Restores the current line to its state before
you started changing it (3.5).
V Unused.
W Moves forward to the beginning of a word in
the current line, where words are defined as
sequences of blank/non-blank characters. A
count repeats the effect (2.4).
X Deletes the character before the cursor. A
count repeats the effect, but only characters
on the current line are deleted.
Y Yanks a copy of the current line into the
unnamed buffer, to be put back by a later p
or P; a very useful synonym for yy. A count
yanks that many lines. May be preceded by a
buffer name to put lines in that buffer
(7.4).
changes have been made, the buffer is written
out to the current file. Then the editor
quits.
[[ Backs up to the previous section boundary. A
section begins at each macro in the sections
option, normally a `.NH' or `.SH' and also at
lines which which start with a formfeed ^L.
Lines beginning with { also stop [[; this
makes it useful for looking backwards, a
function at a time, in C programs. If the
option lisp is set, stops at each ( at the
beginning of a line, and is thus useful for
moving backwards at the top level LISP
objects. (4.2, 6.1, 6.6, 7.2).
\ Unused.
]] Forward to a section boundary, see [[ for a
definition (4.2, 6.1, 6.6, 7.2).
^ Moves to the first non-white position on the
current line (4.4).
_ Unused.
` When followed by a ` returns to the previous
context. The previous context is set when-
ever the current line is moved in a non-
relative way. When followed by a letter a-z,
returns to the position which was marked with
this letter with a m command. When used with
an operator such as d, the operation takes
place from the exact marked place to the
current position within the line; if you use
', the operation takes place over complete
lines (2.2, 5.3).
a Appends arbitrary text after the current cur-
sor position; the insert can continue onto
multiple lines by using RETURN within the
insert. A count causes the inserted text to
be replicated, but only if the inserted text
is all on one line. The insertion terminates
with an ESC (3.1, 7.2).
b Backs up to the beginning of a word in the
current line. A word is a sequence of
alphanumerics, or a sequence of special char-
acters. A count repeats the effect (2.4).
c An operator which changes the following
single line is affected, the text which is
changed away is saved in the numeric named
buffers. If only part of the current line is
affected, then the last character to be
changed away is marked with a $. A count
causes that many objects to be affected, thus
both 3c) and c3) change the following three
sentences (7.4).
d An operator which deletes the following
object. If more than part of a line is
affected, the text is saved in the numeric
buffers. A count causes that many objects to
be affected; thus 3dw is the same as d3w
(3.3, 3.4, 4.1, 7.4).
e Advances to the end of the next word, defined
as for b and w. A count repeats the effect
(2.4, 3.1).
f Finds the first instance of the next charac-
ter following the cursor on the current line.
A count repeats the find (4.1).
g Unused.
Arrow keys h, j, k, l, and H.
h Left arrow. Moves the cursor one character
to the left. Like the other arrow keys,
either h, the left arrow key, or one of the
synonyms (^H) has the same effect. On v2
editors, arrow keys on certain kinds of ter-
minals (those which send escape sequences,
such as vt52, c100, or hp) cannot be used. A
count repeats the effect (3.1, 7.5).
i Inserts text before the cursor, otherwise
like a (7.2).
j Down arrow. Moves the cursor one line down
in the same column. If the position does not
exist, vi comes as close as possible to the
same column. Synonyms include ^J (linefeed)
and ^N.
k Up arrow. Moves the cursor one line up. ^P
is a synonym.
l Right arrow. Moves the cursor one character
to the right. SPACE is a synonym.
next character a-z. Return to this position
or use with an operator using ` or ' (5.3).
n Repeats the last / or ? scanning commands
(2.2).
o Opens new lines below the current line; oth-
erwise like O (3.1).
p Puts text after/below the cursor; otherwise
like P (6.3).
q Unused.
r Replaces the single character at the cursor
with a single character you type. The new
character may be a RETURN; this is the easi-
est way to split lines. A count replaces
each of the following count characters with
the single character given; see R above which
is the more usually useful iteration of r
(3.2).
s Changes the single character under the cursor
to the text which follows up to an ESC; given
a count, that many characters from the
current line are changed. The last character
to be changed is marked with $ as in c (3.2).
t Advances the cursor upto the character before
the next character typed. Most useful with
operators such as d and c to delete the char-
acters up to a following character. You can
use . to delete more if this doesn't delete
enough the first time (4.1).
u Undoes the last change made to the current
buffer. If repeated, will alternate between
these two states, thus is its own inverse.
When used after an insert which inserted text
on more than one line, the lines are saved in
the numeric named buffers (3.5).
v Unused.
w Advances to the beginning of the next word,
as defined by b (2.4).
x Deletes the single character under the cur-
sor. With a count deletes deletes that many
characters forward from the cursor position,
but only on the current line (6.5).
the unnamed temporary buffer. If preceded by
a named buffer specification, "x, the text is
placed in that buffer also. Text can be
recovered by a later p or P (7.4).
z Redraws the screen with the current line
placed as specified by the following charac-
ter: RETURN specifies the top of the screen,
. the center of the screen, and - at the bot-
tom of the screen. A count may be given
after the z and before the following charac-
ter to specify the new screen size for the
redraw. A count before the z gives the
number of the line to place in the center of
the screen instead of the default current
line. (5.4)
{ Retreats to the beginning of the beginning of
the preceding paragraph. A paragraph begins
at each macro in the paragraphs option, nor-
mally `.IP', `.LP', `.PP', `.QP' and `.bp'.
A paragraph also begins after a completely
empty line, and at each section boundary (see
[[ above) (4.2, 6.8, 7.6).
| Places the cursor on the character in the
column specified by the count (7.1, 7.2).
} Advances to the beginning of the next para-
graph. See { for the definition of paragraph
(4.2, 6.8, 7.6).
~ Unused.
^? (DEL) Interrupts the editor, returning it to com-
mand accepting state (1.5, 7.5)
Man(1) output converted with
man2html