vi(1)vi(1)NAME
vi, vedit, view - Edits files with a full screen display
SYNOPSIS
Normal Syntax
vi [-ls] [-R] | [-r] [-c subcommand] [-t tag] [-w number] [-x] [-v]
[+[subcommand]] [-] [file...]
Read-only Syntax
view [-l] [-R] | [-r] [-t tag] [-c subcommand] [-w number] [-x] [-v]
[+[subcommand]] [-] [file...]
Novice Version Syntax
vedit [-l] [-R] | [-r] [-t tag] [-w number] [-x] [-v] [-] [file...]
The vi command is a display editor that is based on an underlying line
editor (ex).
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
vi: XCU5.0
vedit: XCU5.0
view: XCU5.0
ex: XCU5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
OPTIONS
Performs the specified ex subcommand before editing begins.
This subcommand may actually consist of several commands sepa‐
rated by vertical line (|) characters. Indents appropriately
for LISP code, and accepts the (, ), {, }, [, and ] characters
(parentheses, braces, and brackets) as text rather than inter‐
preting them as vi subcommands. The LISP modifier is active in
open or visual modes. Recovers file after an editor or system
crash. If you do not specify a file, vi displays a list of all
saved files. [Tru64 UNIX] Invokes vi in open mode. (Silent
mode.) Sets the readonly option to protect the file against
overwriting.
[Tru64 UNIX] This option is automatically invoked if you use
the view command. Edits the file containing the tag and posi‐
tions the editor at its definition. To use this option, you
must first create a database of function names and their loca‐
tions using the ctags command. [Tru64 UNIX] Invokes the visual
editor. When the -v option is specified, an enlarged set of
subcommands is available, including screen editing and cursor
movement features. This option has no effect when vi is speci‐
fied, but is honored for compatibility with historical conven‐
tions. Sets the default window size to number. This is useful
when you use the editor over a low-speed line. [Tru64
UNIX] Prompts for an encryption key and then unencrypts the
file. If the file specified is not encrypted or an incorrect
key is entered, garbled text is displayed. [Tru64 UNIX] Sup‐
presses all interactive user feedback. If you use this option,
file input/output errors do not generate an error message. Per‐
forms the ex subcommand before editing begins. If you do not
specify subcommand, the cursor is placed on the last line of the
file. This option is obsolescent.
This subcommand may actually consist of several commands sepa‐
rated by vertical line (|) characters.
OPERANDS
The file argument specifies the files to be edited. If you supply more
than one file on the command line, vi edits each file in the order
specified.
DESCRIPTION
The ex editor subcommands can be used within the vi editor, because vi
is based on ex. The view command is a read-only version of vi; the
readonly option is set to protect files during browsing. The vedit
command is a version of vi intended for beginners. In it, the report
option is set to 1, the showmode option is set, and the novice option
(making vedit a line editor, rather than a screen editor) is set. (For
more information on these options, see Setting Options.)
When you use vi, changes you make to a file are reflected on your dis‐
play. The position of the cursor on the display indicates its position
within the file. The subcommands affect the file at the cursor posi‐
tion.
[Tru64 UNIX] You can encrypt a file using the :X subcommand. Ensure
that you remember the encryption key because an easy means to unencrypt
a file does not exist. Only the first 6 characters of a key are sig‐
nificant.
Limitations of the vi Editor
The maximum limits of the vi editor are as follows: [Tru64 UNIX] 2048
bytes per line [Tru64 UNIX] 256 bytes per global command list [Tru64
UNIX] 128 bytes in the previous inserted and deleted text [Tru64
UNIX] 128 bytes in a shell escape command [Tru64 UNIX] 128 bytes in a
string-valued option [Tru64 UNIX] 100 bytes in a tag name [Tru64
UNIX] 128 map macros with 2048 bytes total.
Editing Modes
The vi editor has the following operational modes: When you start the
vi editor, it is in Command mode. Any subcommand can be entered from
this mode, except commands that can only be used in the Text Input mode
(those subcommands that make corrections during text insertion). When
subcommands and the other modes end, vi returns to Command mode.
Pressing the <Esc> key cancels a partial subcommand. Entered by the a,
A, i, I, o, O, cx (where x represents the scope of the subcommand), C,
s, S, and R subcommands. After entering one of these commands, you can
enter text into the editing buffer at the current cursor position. To
return to Command mode, press <Esc> for normal exit or press the Inter‐
rupt key sequence to end abruptly. Some subcommands (those with the
prefix : (colon), / (slash), ? (question mark), or !!) read input on a
line displayed at the bottom of the screen. When you enter the initial
character, vi places the cursor at the bottom of the screen, where you
enter the remaining characters of the command. Press <Return> to per‐
form the subcommand and enter the Interrupt key sequence to cancel it.
When !! is used, the cursor moves only after the two exclama‐
tion points are entered. When : is used, special meaning is
given to the following characters if used as counts before a
command: All lines, regardless of cursor position Last line Cur‐
rent line
Setting Options
The vi editor allows you to customize options so that you can use the
editor for a specific task. Use the set command to set or change an
option. To view the current setting of all options, enter :set all
while in vi Command mode. To view the current setting of options that
may be set to a value, enter a line of the form :set option.
Some options are set to a string or a number value; other options are
simply turned on or off. To change an option that is set to a value,
enter a command in the form :set option=value. To toggle an option that
can be set to on or off, enter a line of the form :set option to set it
to on or :set nooption to set it to off.
Options can be abbreviated in a set command. The following table lists
some of vi's options, along with abbreviations and descriptions:
Option Abbreviation Description
[no]autoindent ai Indents automatically in
Text mode to the indenta‐
tion on the previous line
by using the spacing
between tab stops speci‐
fied by the shiftwidth
option. The default is
noai. To back the cursor
up to the previous tab
stop, type <Ctrl-d>. This
option is not in effect
for global commands.
[no]autoprint ap Prints the current line
after any command that
changes the editing buf‐
fer. The default is ap.
This option applies only
to the last command in a
sequence of commands on a
single line, and is not in
effect for global com‐
mands.
[no]autowrite aw Writes the editing buffer
to the file automatically
before the :n, :ta, <Ctrl-
a>, and ! subcommands if
the editing buffer was
changed since the last
write command. The
default is noaw.
[no]beautify bf Prevents user from enter‐
ing control characters
(except for tab, newline,
and formfeed) in the edit‐
ing buffer during text
entry. The default is
nobf. This option does
apply to command input.
closepunct cp= The default is
cp='".,;)]}.
directory dir= Displays the directory
that contains the editing
buffer. The default is
dir=/var/tmp.
[no]edcompatible ed Retains global (g) and
confirms (c) subcommand
suffixes during multiple
substitutions and causes
the read (r) suffix to
work like the r subcom‐
mand. The default is
noed.
[no]errorbells eb Precedes error messages
with an <Alert> character.
Setting this option off
(noeb) does not suppress
the alerting in visual
mode. The default is
noeb.
[no]exrc "! If not set, ignores any
file in the current direc‐
tory during initializa‐
tion, unless the current
directory is that named by
the HOME variable. The
default is noexrc.
[no]flash fl Uses visual flash rather
than audible bell. The
default is fl.
hardtabs ht= Tells vi the distance
between the hardware tab
stops on your display.
The default is ht=8.
[no]ignorecase ic Ignores the distinction
between uppercase and low‐
ercase while searching for
regular expressions. The
default is noic.
[no]lisp lisp Enters vi in LISP mode.
In this mode, vi appropri‐
ately indents for LISP
code and the (, ), {, },
[[, and ]]. The default
is nolisp.
[no]list list Displays text with tabs
and the end of lines
marked. Tabs are dis‐
played as ^I and the end
of lines as $. The
default is nolist.
[no]magic magic Treats the characters [,
and * as special charac‐
ters in scans. In Off
mode, only the (, ), and $
characters retain special
meanings; however, special
meaning of other charac‐
ters can still be invoked
by preceding the character
with a \ (backslash). The
default is magic.
[no]mesg mesg Permits other users to use
the talk or write commands
to write to the terminal
when in visual mode. The
shell level mesg n command
takes precedence over the
mesg option. If a mesg y
command was issued before
vi (or ex) was started,
set nomesg can be used to
suppress message, but a
set mesg input can not
override a mesg n command.
The default is mesg.
[no]modeline modeline Runs an editor command
line if found in the first
five and the last five
lines of the file. An
editor command line may be
anywhere in a line. To be
recognized as a command
line, it must contain a
space or a tab followed by
the string ex: or vi:.
The command line is ended
by a second : (colon).
The editor tries to inter‐
pret any data between the
first and second : as edi‐
tor commands. The default
is nomodeline.
[no]novice novice The default is nonovice.
[no]number nu Displays lines prefixed
with their line numbers.
The default is nonu.
[no]optimize opt Speeds up the operation of
terminals that do not have
cursor addressing. The
default is noopt.
paragraphs para= Defines macro names that
start paragraphs. The
default is para=IPLPP‐
PQPP LIpplpipnpbp. Single
letter nroff macros, such
as
must include the
space as a quoted
character if
respecifying a
paragraph.
partialcharacter pc= The default is pc=-.
[no]prompt prompt Prompts for command mode
input with a : (colon).
When not set, no prompt is
displayed. The default is
prompt.
readonly " Allows writing to a dif‐
ferent file. In addition,
the write can be forced by
using the ! (exclamation
point) character (see the
editor command write).
The default is off, unless
the file lacks write per‐
mission or the -R option
is specified.
[no]redraw re Simulates a smart display
on a dumb display. The
default is nore.
[no]remap remap Enables following of map
keys. For example, if
remap is set, map u k map
r u causes r to map to k.
If noremap is set, r maps
to u. The default is
remap.
report report= Sets the number of repeti‐
tions of a command before
a message is displayed.
For subcommands that can
produce a number of mes‐
sages, such as global sub‐
commands, the messages are
displayed when the command
is completed. The default
is report=5.
scroll scr= Sets the number of lines
to be scrolled when you
scroll the screen up or
down. The default scroll
is one-half the size of
the screen.
sections sect= Defines macro names that
start sections. The
default is
sect=NHSHH HUuhsh+c. Sin‐
gle letter nroff macros,
such as
must include the
space as a quoted
character if
respecifying a
paragraph.
shell sh= Defines the shell for !
or :! commands. The
default is the value of
the SHELL environment
variable.
shiftwidth sw= Sets the distance for the
software tab stops used by
autoindent, the shift com‐
mands (> and <), and the
text input commands
(<Ctrl-d> and <Ctrl-t>) to
allow the editor to indent
text and move back to a
previous indentation. The
default is sw=8.
[no]showmatch sm Shows the matching open
parenthesis ( or open
brace { as you type the
close parenthesis ) or
close brace }. The
default is nosm.
[no]showmode smd Displays mode indicator at
the bottom of the screen
when in the insert or
replace mode. The default
is nosmd.
[no]slowopen slow Postpones updating the
display during inserts.
The default is noslow.
[no]sourceany Allows the use of the
source command on a file
that a user does not own.
The default is
nosourceany.
tabstop ts= Sets the distance between
tab stops when a file is
displayed. The default is
ts=8.
taglength tl= Determines length of tag.
The default is tl=0.
[no]tags tag Specifies a list of possi‐
ble file names of tag
files. The default is
tag=tags /usr/lib/tags.
term term= Sets the kind of display
you are using. The
default is term=$TERM,
where $TERM is the value
of the TERM shell vari‐
able.
[no]terse terse Allows vi to display the
short form of messages.
The default is noterse.
[no]timeout to Sets a time limit of 2
seconds on entry of char‐
acters. This limit allows
the characters in a macro
to be entered and pro‐
cessed as separate charac‐
ters when timeout is set.
To resume use of the
macro, set notimeout. The
default is to.
ttytype tty= Same as term.
[no]warn warn Displays a warning message
before the ! subcommand
executes a shell command
if this is the first time
you issued a shell command
after a given set of
changes were made in the
editing buffer, but not
written to a file. The
default is warn.
window wi= Sets the number of lines
displayed in one window of
text. The default is
dependent on the baud rate
at which you are operat‐
ing: 600 baud or less
/ 8 lines, 1200 baud
/ 16 lines, higher
speeds / full screen
minus 1.
wrapmargin wm= Sets the margin for auto‐
matic wordwrapping from
one line to the next. A
value of wm=8, for exam‐
ple, causes vi to wrap
additional characters to
the next line when the
cursor is 8 characters or
less from the right mar‐
gin. A value of 0 indi‐
cates no wordwrapping. The
default is wm=0.
[no]wrapscan ws Allows string searches to
wrap from the end of the
editing buffer to the
beginning. The default is
ws.
wraptype wt= (For editing Japanese)
Controls wrapping of Japa‐
nese words. Setting wrap‐
type=general causes gen‐
eral-purpose wrap on word
breaks, where word break
is defined as whitespace
or space between two
nonASCII characters. Set‐
ting wraptype=general is a
combination of word and
flexible. Setting wrap‐
type=word causes wrap on
words. Setting wrap‐
type=rigid causes wrap on
column and before closing
punctuation. Setting
wraptype=flexible causes
wrap on column, but clos‐
ing punctuation may extend
past the margin. The
default is wt=word.
[no]writeany wa Turns off the checks usu‐
ally made before a write
command. The default is
nowa.
Defining Macros
If you use a subcommand or sequence of subcommands frequently, you can
create a macro that issues the subcommand or sequence when you call a
macro. To create a macro, enter the sequence of subcommands into an
editing buffer named with a letter of the alphabet. When used as buf‐
fer names, lowercase ASCII letters a through z overlay the contents of
the buffer, while uppercase ASCII letters A through Z append text to
the previous contents of the buffer, allowing the building of a macro
piece by piece.
To invoke the macro, enter @x, where x is the letter name of the buf‐
fer. Enter @@ to repeat the last macro you invoked.
Mapping Keys
You can use the map command to set a keystroke to a subcommand or a
sequence of subcommands. To set a key mapping, enter :map key subcom‐
mand where key is the key to which you want to assign a subcommand or
sequence of subcommands and subcommand is the subcommand or sequence of
subcommands. For example, to set @ to delete lines, enter: :map @ dd
In this example, @ is the key to which the subcommand is assigned and
dd is the subcommand.
In the next example, a subcommand sequence is mapped to a key: :map *
{>}
The * (asterisk) is the key to which the subcommand sequence is
assigned and {>} is the subcommand sequence. The { (open brace) moves
the cursor to the beginning of the paragraph and the > (right angle
bracket) indents the paragraph to the next shiftwidth.
To display the list of the current key mappings while you are in Com‐
mand mode, enter the :map command. You can also remove a key mapping.
To remove a key mapping, enter :unmap string or :unmap! string where
string is the string used after the :map command to set the key and
subcommand sequence. For example, to remove key mapping for the previ‐
ous example, enter: :unmap *
If function keys are defined for your terminal, they can be put in a
map or unmap command by typing <Ctrl-v> then pressing the desired key.
In this way, function keys that are unused during editing can be mapped
to useful editing subcommand sequences.
If the ! (exclamation point) character is appended to the command name
map (map!), the mapping is effective during input mode rather than dur‐
ing visual mode.
Abbreviations
You can define abbreviations for long phrases that you use often. The
vi editor then automatically expands these abbreviations whenever you
enter them in insert mode. Only single-byte characters can appear in
abbr_string; abbr_string cannot contain Asian multibyte characters.
To define an abbreviation, enter: :abbr abbreviation phrase
where abbreviation is the abbreviation you specify for the longer text
specified by phrase. For example, to specify the abbreviation imho for
the phrase In my humble opinion, enter: :abbr imho In my humble opinion
Keeping a Customized Change
When you customize vi from the vi command line, the customized editor
is in effect until you exit the editor. If you want to reuse such
things as option settings and key mappings, you must put them in the
file in your home directory or define the EXINIT environment variable.
The vi editor processes the commands given in the EXINIT variable or
reads the file each time you invoke it. Here is an example of an file:
set ai aw set wm=5 map @ dd
Users with both a file and an EXINIT environment variable will find
that the vi editor no longer reads the file. This change was made to
meet the specifications of XPG4.
The standard provides for an approximation of the old behavior. A new
variable, named exrc, is defined. When this variable is set by the com‐
mands in the EXINIT environment variable, the editor reads in the cur‐
rent directory for additional startup commands. For example: setenv
EXINIT 'set ai terse magic bf wm=1 exrc'
[Tru64 UNIX] Additionally, the editor refuses to read the file if its
mode grants write permission to anyone other than the owner; this
restriction prevents certain security breaches. No overt indication is
given when such a refusal occurs.
vi Character Sets
The collation sequence, as defined by the value of the LC_COLLATE envi‐
ronment variable, defines the alphanumeric set used by your system.
This table affects the performance of vi macros and subcommands.
The vi editor uses the collation sequence to distinguish between a
small word and a big word. A small word is bounded by letters or num‐
bers as defined in the collation table. For example, isn't is two
small words. The ' (apostrophe) is not a number or an alphabetic char‐
acter, and it bounds both the small word t and the small word isn. A
big word is bounded by spaces, tabs, or newline indicators. For exam‐
ple, stop is a big word. For more information, see the section Moving
to Words.
Subcommand Syntax
[named_buffer] [operator] [number] argument
Surrounding brackets indicate optional items. A temporary text storage
area. Specifies the subcommand or action; instructs the vi editor. A
whole decimal value that specifies either the extent of the action or a
line address. The vi editor interprets this number in one of the fol‐
lowing ways: Go to line number: 5G 10z<Return> Go forward number col‐
umns. 25<Space> Scroll number of lines: 10<Ctrl-d> 10<Ctrl-u> Delete
number lines: 6dd The % means all. To yank all lines: %y
(The preceding command replaces 1,$y.) Specifies what to act
on. This can be a text object (a character, word, sentence,
paragraph, section, or character string) or a text position (a
line, position in the current line, or screen position).
Moving Within a File
Enter the following subcommands in Command mode. You can cancel an
incomplete subcommand by pressing the <Esc> key. Moves the cursor one
character to the left. Moves the cursor down one line, remaining in
the same column. Moves the cursor up one line, remaining in the same
column. Moves the cursor one character to the right.
Long lines: Lines over one screen width are wrapped but not
broken. When using the Up Arrow or Page Up key, @ lines are
added at the bottom of the screen when too few physical lines
are available to display the complete line. The Down Arrow key
moves the entire line off the screen at once.
Character Positioning Within a Line
Enter the following subcommands in Command mode. Moves the cursor to
the first nonspace character. Moves the cursor to the beginning of the
line. Moves the cursor to the end of the line. Moves the cursor to
the next x character. Moves the cursor to the last x character. Moves
the cursor to one column before the next x character. Moves the cursor
to one column after the last x character. Repeats the last f, F, t, or
T subcommand. Repeats the last f, F, t, or T subcommand in the oppo‐
site direction. Moves the cursor to the specified column.
Moving to Words
Enter the following subcommands in Command mode. Moves the cursor to
the next small word. Moves the cursor to the previous small word.
Moves the cursor to the end of the next small word. Moves the cursor
to the next big word. Moves the cursor to the previous big word.
Moves the cursor to the end of the next big word.
Moving by Line Positioning
Enter the following subcommands in Command mode. Moves to the line
number given as preceding argument, or the end of the file if no pre‐
ceding count is given. Moves the cursor to the top line on the screen.
Moves the cursor to the last line on the screen. Moves the cursor to
the middle line on the screen. Moves the cursor to the next line, at
its first nonspace character. Moves the cursor to the previous line,
at its first nonspace character. Moves the cursor to the next line, at
its first nonspace character.
Moving to Sentences, Paragraphs, or Sections
Enter the following subcommands in Command mode. You can cancel an
incomplete subcommand by pressing the <Esc> key. Places the cursor at
the beginning of the previous sentence (or the previous S-expression if
you are in LISP mode). Places the cursor at the beginning of the next
sentence (or the next S-expression if you are in LISP mode). Places
the cursor at the beginning of the previous paragraph (or at the next
list if you are in LISP mode). Places the cursor at the beginning of
the next paragraph, at the next section if you are in C mode, or at the
next list if you are in LISP mode. Requires a count; the cursor is
placed in that column (if possible). Places the cursor at the next
section, or function if you are in LISP mode. Places the cursor at the
previous section, or function if you are in LISP mode.
Paging and Scrolling
Scrolls up (default 12 lines). Scrolls down (default 12 lines). Pages
forward one screen. Pages backward one screen. Scrolls the window up
one line. Scrolls the window down one line. Moves to the first non-
white character in the next line. A count specifies the number of
lines to go forward. Inserts shiftwidth white space in input mode, if
at the beginning of the line or preceded only by white space. This
inserted space can only be backed over using <Ctrl-d>. Cancels a par‐
tially formed command; sounds the bell if there is none.
In input mode, terminates input mode.
When entering a command on the bottom line of the screen (ex
command line or search pattern with / or ?), terminates input
and executes command. Pages up. Pages down.
Searching for Patterns
The following commands allow you to search for patterns within a file.
Patterns can be regular expressions as described for grep. Places the
cursor at the next line containing pattern. Repeats the last search
for pattern in the direction of the end of the file. Places the cursor
at the next previous line containing pattern. Repeats the last search
for pattern in the direction of the beginning of the file. Repeats the
last search for pattern in the same direction. Repeats the last search
for pattern in the opposite direction. Places the cursor at the num‐
berth line after the line matching pattern. Places the cursor at the
numberth line before the line matching pattern. Finds the parenthesis
or brace that matches the one at the current cursor position.
Marking and Returning
Enter the following subcommands in Command mode. You can cancel an
incomplete subcommand by pressing the <Esc> key. Moves the cursor to
the same cursor position of the previous current line. Moves the cur‐
sor to the beginning of the previous current line. Marks the current
position with the letter specified by x. Moves the cursor to the same
cursor position of line marked x. Moves the cursor to the beginning of
the line marked x.
Adjusting the Screen
Enter the following subcommands in Command mode. An incomplete subcom‐
mand can be canceled by pressing the <Esc> key. Clears and redraws the
screen. Redraws the screen and eliminates blank lines marked with a @.
Redraws the screen with the current line at the top of the screen.
Redraws the screen with the current line at the bottom of the screen.
Redraws the screen with the current line at the center of the screen.
Redraws the screen with the line containing pattern at the top.
Redraws the screen with the line containing pattern at the top.
Redraws the screen with the line containing pattern at the bottom.
Redraws the screen with the line containing pattern at the center.
Makes the window number lines long.
Adding Text to a File--Text Input Mode
The following subcommands are entered in Command mode and bring the vi
editor into Text Input mode to allow you to add text to your file. End
Text Input mode by pressing the <Esc> key. Inserts text after the cur‐
sor. Adds text to the end of the line. Inserts text before the cur‐
sor. Inserts text before the first nonspace character in the line.
Adds an empty line below the current line. Adds an empty line above
the current line.
Changing Text While in Input Mode
Use the following commands only while in Text Entry mode. They have
different meanings in Command mode. Erases the last character. Erases
the last small word. (For more information about small words, see the
section vi Character Sets.) Quotes the Erase and Kill characters.
Ends insertion, back to Command mode. Interrupts, terminates insert or
<Ctrl-d>. Goes back to the previous autoindent stop. Ends autoindent
for this line only. Moves the cursor back to the left margin. Quotes
a nonprinting character.
Changing Text from Command Mode
Use the following subcommands in Command mode. An incomplete subcom‐
mand can be canceled by pressing the <Esc> key. Changes the rest of
the line (c$).
If more than part of a line is affected and the STDS_FLAG envi‐
ronment variable is set to ALL, the text is saved in the numeric
buffers. Must be followed by a movement command. Deletes the
specified region of text and enters input mode to replace it
with the entered text. If more than part of a single line is
affected, the deleted text is saved in the numeric buffers. If
only part of the current line is affected, the last character to
be deleted is marked with a $. A count is passed through to the
move command. If the command is cc, the whole of the current
line is changed. Changes a line. Changes a word. Deletes the
rest of the line (d$) and puts it into the undo buffer. Must be
followed by a movement command. Deletes the specified region of
text. If more than part of a line is affected, the text is
saved in the numeric buffers. A count is passed through to the
move command. If the command is dd, the whole of the current
line is deleted. Deletes a line and puts it into the undo buf‐
fer. Deletes a word and puts it into the undo buffer. Joins
lines. Replaces the current character with the character speci‐
fied by x. Overwrites characters. Substitutes characters (cl).
Substitutes lines (cc).
If more than part of a line is affected and the STDS_FLAG envi‐
ronment variable is set to ALL, the text is saved in the numeric
buffers. Undoes the previous change. Deletes a character.
Deletes characters before cursor (dh). Shifts one line to the
left. Shifts all lines from the cursor to the end of the screen
to the left. (The < character describes a range upon which the
L subcommand acts.) Shifts one line to the right. Shifts all
lines from the cursor to the end of the screen to the right.
(The > character describes a range upon which the L subcommand
acts.) Changes the letter at the cursor to the opposite case.
Copying and Moving Text
Use the following subcommands in Command mode. An incomplete subcom‐
mand can be canceled by pressing <Esc>. Puts back text in the undo
buffer after (before) the cursor. Puts back text from the buffer x
after (before) the cursor. You must precede the character x with a
double quote. Deletes object into the buffer x. You must precede the
character x with a double quote. Yanks object into the undo buffer
(for example, yw to yank a word). Yanks object into buffer x. You
must precede the character x with a double quote. Places the line in
the undo buffer.
Restoring and Repeating Changes
Use the following subcommands in Command mode. An incomplete subcom‐
mand can be canceled by pressing the <Esc> key. Undoes the last com‐
mand. Restores the current line if the cursor has not left the line
since the last change. Repeats the last change or increments the np
command.
Note that this command is not meant for use with a macro. Enter
@@ to repeat a macro. Retrieves the nth last delete of a com‐
plete line or block of lines. You must precede the character n
with a double quote.
Saving Changes to a File
Use the following subcommands in Command mode. An incomplete subcom‐
mand can be canceled by pressing <Esc>. If you are using these subcom‐
mands within the ex editor, do not type the : (colon). Writes the
editing buffer contents to the original file. Writes the editing buf‐
fer contents to the named file. Overwrites file with the editing buf‐
fer contents. [Tru64 UNIX] Prompts you to enter an encryption key.
When you save the file, it is written in encrypted form. For subse‐
quent edits of the encrypted file, use the -x option to display the
file in its unencrypted form.
Interrupting, Cancelling, and Exiting vi
Enters the ex editor in Command mode. Exits vi, saving changes, if any
were made. Quits vi. If you have changed the contents of the editing
buffer, vi displays a warning message and does not quit. Quits vi,
discarding the editing buffer with no warning. Runs a shell. You can
return to vi by pressing <Ctrl-d>. Runs the file through the specified
shell command (causes no change to the file). Runs command, then
returns. Repeats the last :!command command. Executes the shell com‐
mand identified by command and replaces the number of lines specified
by n with the output of command. If n is not specified, the default is
1. If command expects standard input, the lines specified are used as
input. (10!!sort sorts the next 10 lines.) Works like n!!command,
except that lines is a line address (for example, !Gsort sorts the rest
of the file). Interrupts a subcommand.
Editing a Second File
Enter the following subcommands in Command mode. An incomplete subcom‐
mand can be canceled by pressing the <Esc> key. Edits file. If you
are using this subcommand from the ex editor, do not type the :
(colon). Reedits the current file and discards all changes. Edits
file, starting at the end. Edits file, starting at the line number.
Edits the alternate file. The alternate file is usually the previous
current file name. However, if changes are pending on the current file
when a new file is called, the new file becomes the alternate file.
Reads the file into the editing buffer by adding new lines below the
current line. If you are using this subcommand from the ex editor, do
not type the : (colon). Runs the shell command identified by command
and places its output in the file by adding new lines below the current
cursor position.
Using a Tags File
The ctags command makes a tags file from the specified C, Pascal, FOR‐
TRAN, yacc, lex, or LISP source files. A tags file gives the locations
of function and type definitions in a group of files. To use the next
three commands, you must first create a database of function names and
their locations (called a tags file) using the ctags command. Edits a
file containing tag at the location of tag. If the tag is in another
file and the current file has been changed (and noaw is set), a warning
is posted. If you are using this subcommand from the ex editor, do not
type the : (colon). Finds the word at the cursor in the tags file
then displays the proper file, placing the cursor at the tag. If the
tag is in the current file, moves cursor to it. Same as :ta, but the
tag is the word to the right of the cursor. Returns to the file and
line where the cursor was positioned when <Ctrl-]> was entered.
Editing a List of Files
Enter the following subcommands in Command mode. Edits the next file
in the list entered on the command line. Specifies a new list of files
to edit.
Displaying File Information
[Tru64 UNIX] Enter the following subcommand in Command mode to show
the current file name, the current line number, the number of lines in
the file, and the percentage of lines of the file that are before the
cursor:
<Ctrl-g>
EXIT STATUS
The following exit values are returned: Successful completion. An
error occurred.
ASYNCHRONOUS EVENTS
The following actions are taken upon receipt of signals: The current
editor command is aborted and vi returns to the command level and
prompts for another command. The screen is refreshed if in visual
mode. If the current buffer has changed since the last e or w command,
vi attempts to save the current file in a state such that it can be
recovered later by an ex -r or vi -r command.
ENVIRONMENT VARIABLES
The following environment variables affect the execution of vi: Over‐
rides the system-selected horizontal screen size. Determines a list of
ex commands to be executed at startup before the first file is read.
The list can include multiple commands separated by a vertical line (|)
character. Determines the pathname of a directory searched at startup
for a file named Provides a default value for the internationalization
variables that are unset or null. If LANG is unset or null, the corre‐
sponding value from the default locale is used. If any of the interna‐
tionalization variables contain an invalid setting, the utility behaves
as if none of the variables had been defined. If set to a non-empty
string value, overrides the values of all the other internationaliza‐
tion variables. Determines the locale for the behavior of ranges,
equivalence classes, and multicharacter collating elements within regu‐
lar expressions. Determines the locale for the interpretation of
sequences of bytes of text data as characters (for example, single-byte
as opposed to multibyte characters in arguments and input files), the
behavior of character classes within regular expressions, the classifi‐
cation of characters as upper- or lower-case letters, the case conver‐
sion of letters, and the detection of word boundaries. Overrides the
system-selected vertical screen size, used as the number of lines in a
screenful and the vertical screen size in visual mode. Determines the
locale for the format and contents of diagnostic messages written to
standard error. Determines the location of message catalogues for the
processing of LC_MESSAGES. Determines the search path for the shell
command specified in the editor commands shell, read and write and the
visual-mode command !. Determines the preferred command-line inter‐
preter for use in !, shell, read and other commands with an operand of
the form !string. For the shell command the program will be invoked
with the single argument -i, for all others it will be invoked with the
two arguments -c and string. If this variable is null or not set, the
POSIX compliant sh command will be used. Resolves the behavior of the
command in some scenarios that cause noncompliance with POSIX stan‐
dards. Setting this variable to ALL enables the command to overcome all
instances of noncompliance. Determines the name of the terminal type.
If this variable is unset or null, a default terminal type that pro‐
vides most capabilities is used.
SEE ALSO
Commands: ctags(1), edit(1), ed(1), ex(1), grep(1), mesg(1), nroff(1),
sed(1)
Files: terminfo(4)
Environment: environ(5)
Standards: standards(5)vi(1)