2799 lines
52 KiB
Groff
2799 lines
52 KiB
Groff
.\" Copyright (c) 1994
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\" Copyright (c) 1994, 1995, 1996
|
|
.\" Keith Bostic. All rights reserved.
|
|
.\" Copyright (c) 2011
|
|
.\" Zhihao Yuan. All rights reserved.
|
|
.\"
|
|
.\" The vi program is freely redistributable.
|
|
.\" You are welcome to copy, modify and share it with others
|
|
.\" under the conditions listed in the LICENSE file.
|
|
.\" If any company (not individual!) finds vi sufficiently useful
|
|
.\" that you would have purchased it, or if any company wishes to
|
|
.\" redistribute it, contributions to the authors would be appreciated.
|
|
.\"
|
|
.Dd September 25, 2020
|
|
.Dt VI 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm ex , vi , view
|
|
.Nd text editors
|
|
.Sh SYNOPSIS
|
|
.Nm ex
|
|
.Op Fl FRrSsv
|
|
.Op Fl c Ar cmd
|
|
.Op Fl t Ar tag
|
|
.Op Fl w Ar size
|
|
.Op Ar
|
|
.Nm vi\ \&
|
|
.Op Fl eFRrS
|
|
.Op Fl c Ar cmd
|
|
.Op Fl t Ar tag
|
|
.Op Fl w Ar size
|
|
.Op Ar
|
|
.Nm view
|
|
.Op Fl eFrS
|
|
.Op Fl c Ar cmd
|
|
.Op Fl t Ar tag
|
|
.Op Fl w Ar size
|
|
.Op Ar
|
|
.Sh DESCRIPTION
|
|
.Nm vi
|
|
is a screen-oriented text editor.
|
|
.Nm ex
|
|
is a line-oriented text editor.
|
|
.Nm ex
|
|
and
|
|
.Nm vi
|
|
are different interfaces to the same program,
|
|
and it is possible to switch back and forth during an edit session.
|
|
.Nm view
|
|
is the equivalent of using the
|
|
.Fl R
|
|
.Pq read-only
|
|
option of
|
|
.Nm vi .
|
|
.Pp
|
|
This manual page is the one provided with the
|
|
.Nm nex Ns / Ns Nm nvi
|
|
versions of the
|
|
.Nm ex Ns / Ns Nm vi
|
|
text editors.
|
|
.Nm nex Ns / Ns Nm nvi
|
|
are intended as bug-for-bug compatible replacements for the original
|
|
Fourth Berkeley Software Distribution
|
|
.Pq 4BSD
|
|
.Nm ex
|
|
and
|
|
.Nm vi
|
|
programs.
|
|
For the rest of this manual page,
|
|
.Nm nex Ns / Ns Nm nvi
|
|
is used only when it's necessary to distinguish it from the historic
|
|
implementations of
|
|
.Nm ex Ns / Ns Nm vi .
|
|
.Pp
|
|
This manual page is intended for users already familiar with
|
|
.Nm ex Ns / Ns Nm vi .
|
|
Anyone else should almost certainly read a good tutorial on the
|
|
editor before this manual page.
|
|
If you're in an unfamiliar environment,
|
|
and you absolutely have to get work done immediately,
|
|
read the section after the options description, entitled
|
|
.Sx FAST STARTUP .
|
|
It's probably enough to get you going.
|
|
.Pp
|
|
The following options are available:
|
|
.Bl -tag -width "-w size "
|
|
.It Fl c Ar cmd
|
|
Execute
|
|
.Ar cmd
|
|
on the first file loaded.
|
|
Particularly useful for initial positioning in the file, although
|
|
.Ar cmd
|
|
is not limited to positioning commands.
|
|
This is the POSIX 1003.2 interface for the historic
|
|
.Dq +cmd
|
|
syntax.
|
|
.Nm nex Ns / Ns Nm nvi
|
|
supports both the old and new syntax.
|
|
.It Fl e
|
|
Start editing in ex mode, as if the command name were
|
|
.Nm ex .
|
|
.It Fl F
|
|
Don't copy the entire file when first starting to edit.
|
|
(The default is to make a copy in case someone else modifies
|
|
the file during your edit session.)
|
|
.\" .It Fl l
|
|
.\" Start editing with the lisp and showmatch options set.
|
|
.It Fl R
|
|
Start editing in read-only mode, as if the command name was
|
|
.Nm view ,
|
|
or the
|
|
.Cm readonly
|
|
option was set.
|
|
.It Fl r
|
|
Recover the specified files, or, if no files are specified,
|
|
list the files that could be recovered.
|
|
If no recoverable files by the specified name exist,
|
|
the file is edited as if the
|
|
.Fl r
|
|
option had not been specified.
|
|
.It Fl S
|
|
Run with the
|
|
.Cm secure
|
|
edit option set, disallowing all access to external programs.
|
|
.It Fl s
|
|
Enter batch mode; applicable only to
|
|
.Nm ex
|
|
edit sessions.
|
|
Batch mode is useful when running
|
|
.Nm ex
|
|
scripts.
|
|
Prompts, informative messages and other user oriented messages are turned off,
|
|
and no startup files or environment variables are read.
|
|
This is the POSIX 1003.2 interface for the historic
|
|
.Dq -
|
|
argument.
|
|
.Nm nex Ns / Ns Nm nvi
|
|
supports both the old and new syntax.
|
|
.It Fl t Ar tag
|
|
Start editing at the specified
|
|
.Ar tag
|
|
.Pq see Xr ctags 1 .
|
|
.It Fl v
|
|
Start editing in vi mode, as if the command name was
|
|
.Nm vi .
|
|
.It Fl w Ar size
|
|
Set the initial window size to the specified number of lines.
|
|
.El
|
|
.Pp
|
|
Command input for
|
|
.Nm ex Ns / Ns Nm vi
|
|
is read from the standard input.
|
|
In the
|
|
.Nm vi
|
|
interface, it is an error if standard input is not a terminal.
|
|
In the
|
|
.Nm ex
|
|
interface, if standard input is not a terminal,
|
|
.Nm ex
|
|
will read commands from it regardless; however, the session will be a
|
|
batch mode session, exactly as if the
|
|
.Fl s
|
|
option had been specified.
|
|
.Sh FAST STARTUP
|
|
This section will tell you the minimum amount that you need to
|
|
do simple editing tasks using
|
|
.Nm vi .
|
|
If you've never used any screen editor before,
|
|
you're likely to have problems even with this simple introduction.
|
|
In that case you should find someone that already knows
|
|
.Nm vi
|
|
and have them walk you through this section.
|
|
.Pp
|
|
.Nm vi
|
|
is a screen editor.
|
|
This means that it takes up almost the entire screen,
|
|
displaying part of the file on each screen line,
|
|
except for the last line of the screen.
|
|
The last line of the screen is used for you to give commands to
|
|
.Nm vi ,
|
|
and for
|
|
.Nm vi
|
|
to give information to you.
|
|
.Pp
|
|
The other fact that you need to understand is that
|
|
.Nm vi
|
|
is a modeful editor,
|
|
i.e., you are either entering text or you are executing commands,
|
|
and you have to be in the right mode to do one or the other.
|
|
You will be in command mode when you first start editing a file.
|
|
There are commands that switch you into input mode.
|
|
There is only one key that takes you out of input mode,
|
|
and that is the
|
|
.Aq escape
|
|
key.
|
|
.Pp
|
|
In this manual,
|
|
key names are denoted with \(la and \(ra, e.g.,
|
|
.Aq escape
|
|
means the
|
|
.Dq escape
|
|
key, usually labeled
|
|
.Dq Esc
|
|
on your terminal's keyboard.
|
|
If you're ever confused as to which mode you're in,
|
|
keep entering the
|
|
.Aq escape
|
|
key until
|
|
.Nm vi
|
|
beeps at you.
|
|
Generally,
|
|
.Nm vi
|
|
will beep at you if you try and do something that's not allowed.
|
|
It will also display error messages.
|
|
.Pp
|
|
To start editing a file, enter the following command:
|
|
.Pp
|
|
.Dl $ vi file
|
|
.Pp
|
|
The command you should enter as soon as you start editing is:
|
|
.Pp
|
|
.Dl :set verbose showmode
|
|
.Pp
|
|
This will make the editor give you verbose error messages and display
|
|
the current mode at the bottom of the screen.
|
|
.Pp
|
|
The commands to move around the file are:
|
|
.Bl -tag -width Ds
|
|
.It Cm h
|
|
Move the cursor left one character.
|
|
.It Cm j
|
|
Move the cursor down one line.
|
|
.It Cm k
|
|
Move the cursor up one line.
|
|
.It Cm l
|
|
Move the cursor right one character.
|
|
.It Aq Cm cursor-arrows
|
|
The cursor arrow keys should work, too.
|
|
.It Cm / Ns Ar text
|
|
Search for the string
|
|
.Dq Ar text
|
|
in the file,
|
|
and move the cursor to its first character.
|
|
.El
|
|
.Pp
|
|
The commands to enter new text are:
|
|
.Bl -tag -width "<escape>"
|
|
.It Cm a
|
|
Append new text, after the cursor.
|
|
.It Cm i
|
|
Insert new text, before the cursor.
|
|
.It Cm o
|
|
Open a new line below the line the cursor is on, and start entering text.
|
|
.It Cm O
|
|
Open a new line above the line the cursor is on, and start entering text.
|
|
.It Aq Cm escape
|
|
Once you've entered input mode using one of the
|
|
.Cm a ,
|
|
.Cm i ,
|
|
.Cm o
|
|
or
|
|
.Cm O
|
|
commands, use
|
|
.Aq Cm escape
|
|
to quit entering text and return to command mode.
|
|
.El
|
|
.Pp
|
|
The commands to copy text are:
|
|
.Bl -tag -width Ds
|
|
.It Cm yy
|
|
Copy the line the cursor is on.
|
|
.It Cm p
|
|
Append the copied line after the line the cursor is on.
|
|
.El
|
|
.Pp
|
|
The commands to delete text are:
|
|
.Bl -tag -width Ds
|
|
.It Cm dd
|
|
Delete the line the cursor is on.
|
|
.It Cm x
|
|
Delete the character the cursor is on.
|
|
.El
|
|
.Pp
|
|
The commands to write the file are:
|
|
.Bl -tag -width Ds
|
|
.It Cm :w
|
|
Write the file back to the file with the name that you originally used
|
|
as an argument on the
|
|
.Nm vi
|
|
command line.
|
|
.It Cm :w Ar file_name
|
|
Write the file back to the file with the name
|
|
.Ar file_name .
|
|
.El
|
|
.Pp
|
|
The commands to quit editing and exit the editor are:
|
|
.Bl -tag -width Ds
|
|
.It Cm :q
|
|
Quit editing and leave
|
|
.Nm vi
|
|
(if you've modified the file, but not saved your changes,
|
|
.Nm vi
|
|
will refuse to quit).
|
|
.It Cm :q!
|
|
Quit, discarding any modifications that you may have made.
|
|
.El
|
|
.Pp
|
|
One final caution:
|
|
Unusual characters can take up more than one column on the screen,
|
|
and long lines can take up more than a single screen line.
|
|
The above commands work on
|
|
.Dq physical
|
|
characters and lines,
|
|
i.e., they affect the entire line no matter how many screen lines it takes up
|
|
and the entire character no matter how many screen columns it takes up.
|
|
.Sh REGULAR EXPRESSIONS
|
|
.Nm ex Ns / Ns Nm vi
|
|
supports regular expressions
|
|
.Pq REs ,
|
|
as documented in
|
|
.Xr re_format 7 ,
|
|
for line addresses, as the first part of the
|
|
.Nm ex Cm substitute ,
|
|
.Cm global
|
|
and
|
|
.Cm v
|
|
commands, and in search patterns.
|
|
Basic regular expressions
|
|
.Pq BREs
|
|
are enabled by default;
|
|
extended regular expressions
|
|
.Pq EREs
|
|
are used if the
|
|
.Cm extended
|
|
option is enabled.
|
|
The use of regular expressions can be largely disabled using the
|
|
.Cm magic
|
|
option.
|
|
.Pp
|
|
The following strings have special meanings in the
|
|
.Nm ex Ns / Ns Nm vi
|
|
version of regular expressions:
|
|
.Bl -bullet -offset 6u
|
|
.It
|
|
An empty regular expression is equivalent to the last regular expression used.
|
|
.It
|
|
.Sq \e<
|
|
matches the beginning of the word.
|
|
.It
|
|
.Sq \e>
|
|
matches the end of the word.
|
|
.It
|
|
.Sq \(ti
|
|
matches the replacement part of the last
|
|
.Cm substitute
|
|
command.
|
|
.El
|
|
.Sh BUFFERS
|
|
A buffer is an area where commands can save changed or deleted text
|
|
for later use.
|
|
.Nm vi
|
|
buffers are named with a single character preceded by a double quote,
|
|
for example
|
|
.Cm \&" Ns Aq Ar c ;
|
|
.Nm ex
|
|
buffers are the same,
|
|
but without the double quote.
|
|
.Nm nex Ns / Ns Nm nvi
|
|
permits the use of any character without another meaning in the position where
|
|
a buffer name is expected.
|
|
.Pp
|
|
All buffers are either in
|
|
.Em line mode
|
|
or
|
|
.Em character mode .
|
|
Inserting a buffer in line mode into the text creates new lines for each of the
|
|
lines it contains, while a buffer in character mode creates new lines for any
|
|
lines
|
|
.Em other
|
|
than the first and last lines it contains.
|
|
The first and last lines are inserted at the current cursor position, becoming
|
|
part of the current line.
|
|
If there is more than one line in the buffer,
|
|
the current line itself will be split.
|
|
All
|
|
.Nm ex
|
|
commands which store text into buffers do so in line mode.
|
|
The behaviour of
|
|
.Nm vi
|
|
commands depend on their associated motion command:
|
|
.Bl -bullet -offset 6u
|
|
.It
|
|
.Aq Cm control-A ,
|
|
.Cm h ,
|
|
.Cm l ,
|
|
.Cm ,\& ,
|
|
.Cm 0 ,
|
|
.Cm B ,
|
|
.Cm E ,
|
|
.Cm F ,
|
|
.Cm T ,
|
|
.Cm W ,
|
|
.Cm \(ha ,
|
|
.Cm b ,
|
|
.Cm e ,
|
|
.Cm f
|
|
and
|
|
.Cm t
|
|
make the destination buffer character-oriented.
|
|
.It
|
|
.Cm j ,
|
|
.Aq Cm control-M ,
|
|
.Cm k ,
|
|
.Cm \(aq ,
|
|
.Cm - ,
|
|
.Cm G ,
|
|
.Cm H ,
|
|
.Cm L ,
|
|
.Cm M ,
|
|
.Cm _
|
|
and
|
|
.Cm |\&
|
|
make the destination buffer line-oriented.
|
|
.It
|
|
.Cm $ ,
|
|
.Cm % ,
|
|
.Cm \` ,
|
|
.Cm (\& ,
|
|
.Cm )\& ,
|
|
.Cm / ,
|
|
.Cm ?\& ,
|
|
.Cm [[ ,
|
|
.Cm ]] ,
|
|
.Cm {
|
|
and
|
|
.Cm }
|
|
make the destination buffer character-oriented, unless the starting and
|
|
end positions are the first and last characters on a line.
|
|
In that case, the buffer is line-oriented.
|
|
.El
|
|
.Pp
|
|
The
|
|
.Nm ex
|
|
command
|
|
.Cm display buffers
|
|
displays the current mode for each buffer.
|
|
.Pp
|
|
Buffers named
|
|
.Sq a
|
|
through
|
|
.Sq z
|
|
may be referred to using their uppercase equivalent, in which case new content
|
|
will be appended to the buffer, instead of replacing it.
|
|
.Pp
|
|
Buffers named
|
|
.Sq 1
|
|
through
|
|
.Sq 9
|
|
are special.
|
|
A region of text modified using the
|
|
.Cm c
|
|
.Pq change
|
|
or
|
|
.Cm d
|
|
.Pq delete
|
|
commands is placed into the numeric buffer
|
|
.Sq 1
|
|
if no other buffer is specified and if it meets one of the following conditions:
|
|
.Bl -bullet -offset 6u
|
|
.It
|
|
It includes characters from more than one line.
|
|
.It
|
|
It is specified using a line-oriented motion.
|
|
.It
|
|
It is specified using one of the following motion commands:
|
|
.Aq Cm control-A ,
|
|
.Cm \` Ns Aq Ar character ,
|
|
.Cm n ,
|
|
.Cm N ,
|
|
.Cm % ,
|
|
.Cm / ,
|
|
.Cm { ,
|
|
.Cm } ,
|
|
.Cm \&( ,
|
|
.Cm \&) ,
|
|
and
|
|
.Cm \&? .
|
|
.El
|
|
.Pp
|
|
Before this copy is done, the previous contents of buffer
|
|
.Sq 1
|
|
are moved into buffer
|
|
.Sq 2 ,
|
|
.Sq 2
|
|
into buffer
|
|
.Sq 3 ,
|
|
and so on.
|
|
The contents of buffer
|
|
.Sq 9
|
|
are discarded.
|
|
Note that this rotation occurs
|
|
.Em regardless
|
|
of the user specifying another buffer.
|
|
In
|
|
.Nm vi ,
|
|
text may be explicitly stored into the numeric buffers.
|
|
In this case, the buffer rotation occurs before the replacement of the buffer's
|
|
contents.
|
|
The numeric buffers are only available in
|
|
.Nm vi
|
|
mode.
|
|
.Sh VI COMMANDS
|
|
The following section describes the commands available in the command
|
|
mode of the
|
|
.Nm vi
|
|
editor.
|
|
The following words have a special meaning in the commands description:
|
|
.Pp
|
|
.Bl -tag -width bigword -compact -offset 3u
|
|
.It Ar bigword
|
|
A set of non-whitespace characters.
|
|
.It Ar buffer
|
|
Temporary area where commands may place text.
|
|
If not specified, the default buffer is used.
|
|
See also
|
|
.Sx BUFFERS ,
|
|
above.
|
|
.It Ar count
|
|
A positive number used to specify the desired number of iterations
|
|
of a command.
|
|
It defaults to 1 if not specified.
|
|
.It Ar motion
|
|
A cursor movement command which indicates the other end of the affected region
|
|
of text, the first being the current cursor position.
|
|
Repeating the command character makes it affect the whole current line.
|
|
.It Ar word
|
|
A sequence of letters, digits or underscores.
|
|
.El
|
|
.Pp
|
|
.Ar buffer
|
|
and
|
|
.Ar count ,
|
|
if both present, may be specified in any order.
|
|
.Ar motion
|
|
and
|
|
.Ar count ,
|
|
if both present, are effectively multiplied together
|
|
and considered part of the motion.
|
|
.Pp
|
|
.Bl -tag -width Ds -compact
|
|
.It Xo
|
|
.Aq Cm control-A
|
|
.Xc
|
|
Search forward
|
|
for the word starting at the cursor position.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-B
|
|
.Xc
|
|
Page backwards
|
|
.Ar count
|
|
screens.
|
|
Two lines of overlap are maintained, if possible.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-D
|
|
.Xc
|
|
Scroll forward
|
|
.Ar count
|
|
lines.
|
|
If
|
|
.Ar count
|
|
is not given, scroll forward the number of lines specified by the last
|
|
.Aq Cm control-D
|
|
or
|
|
.Aq Cm control-U
|
|
command.
|
|
If this is the first
|
|
.Aq Cm control-D
|
|
command, scroll half the number of lines in the current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-E
|
|
.Xc
|
|
Scroll forward
|
|
.Ar count
|
|
lines, leaving the current line and column as is, if possible.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-F
|
|
.Xc
|
|
Page forward
|
|
.Ar count
|
|
screens.
|
|
Two lines of overlap are maintained, if possible.
|
|
.Pp
|
|
.It Aq Cm control-G
|
|
Display the following file information:
|
|
the file name
|
|
.Pq as given to Nm vi ;
|
|
whether the file has been modified since it was last written;
|
|
if the file is read-only;
|
|
the current line number;
|
|
the total number of lines in the file;
|
|
and the current line number as a percentage of the total lines in the file.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-H
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm h
|
|
.Xc
|
|
Move the cursor back
|
|
.Ar count
|
|
characters in the current line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-J
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-N
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm j
|
|
.Xc
|
|
Move the cursor down
|
|
.Ar count
|
|
lines without changing the current column.
|
|
.Pp
|
|
.It Aq Cm control-L
|
|
.It Aq Cm control-R
|
|
Repaint the screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-M
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm +
|
|
.Xc
|
|
Move the cursor down
|
|
.Ar count
|
|
lines to the first non-blank character of that line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-P
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm k
|
|
.Xc
|
|
Move the cursor up
|
|
.Ar count
|
|
lines, without changing the current column.
|
|
.Pp
|
|
.It Aq Cm control-T
|
|
Return to the most recent tag context.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-U
|
|
.Xc
|
|
Scroll backwards
|
|
.Ar count
|
|
lines.
|
|
If
|
|
.Ar count
|
|
is not given, scroll backwards the number of lines specified by the last
|
|
.Aq Cm control-D
|
|
or
|
|
.Aq Cm control-U
|
|
command.
|
|
If this is the first
|
|
.Aq Cm control-U
|
|
command, scroll half the number of lines in the current screen.
|
|
.Pp
|
|
.It Aq Cm control-W
|
|
Switch to the next lower screen in the window,
|
|
or to the first screen if there are no lower screens in the window.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm control-Y
|
|
.Xc
|
|
Scroll backwards
|
|
.Ar count
|
|
lines, leaving the current line and column as is, if possible.
|
|
.Pp
|
|
.It Aq Cm control-Z
|
|
Suspend the current editor session.
|
|
.Pp
|
|
.It Aq Cm escape
|
|
Execute the
|
|
.Nm ex
|
|
command being entered, or cancel it if it is only partial.
|
|
.Pp
|
|
.It Aq Cm control-]
|
|
Push a tag reference onto the tag stack.
|
|
.Pp
|
|
.It Aq Cm control-\(ha
|
|
Switch to the most recently edited file.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Aq Cm space
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm l
|
|
.Xc
|
|
Move the cursor forward
|
|
.Ar count
|
|
characters without changing the current line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm !\&
|
|
.Ar motion shell-argument(s)
|
|
.Aq Li carriage-return
|
|
.Xc
|
|
Replace the lines spanned by
|
|
.Ar count
|
|
and
|
|
.Ar motion
|
|
with the output
|
|
.Pq standard output and standard error
|
|
of the program named by the
|
|
.Cm shell
|
|
option, called with a
|
|
.Fl c
|
|
flag followed by the
|
|
.Ar shell-argument(s)
|
|
.Pq bundled into a single argument .
|
|
Within
|
|
.Ar shell-argument(s) ,
|
|
the
|
|
.Sq % ,
|
|
.Sq #
|
|
and
|
|
.Sq !\&
|
|
characters are expanded to the current file name,
|
|
the previous current file name,
|
|
and the command text of the previous
|
|
.Cm !\&
|
|
or
|
|
.Cm :!
|
|
commands, respectively.
|
|
The special meaning of
|
|
.Sq % ,
|
|
.Sq #
|
|
and
|
|
.Sq !\&
|
|
can be overridden by escaping them with a backslash.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm #
|
|
.Sm off
|
|
.Cm # | + | -
|
|
.Sm on
|
|
.Xc
|
|
Increment
|
|
.Pq trailing So # Sc or So + Sc
|
|
or decrement
|
|
.Pq trailing Sq -
|
|
the number under the cursor by
|
|
.Ar count ,
|
|
starting at the cursor position or at the first non-blank
|
|
character following it.
|
|
Numbers with a leading
|
|
.Sq 0x
|
|
or
|
|
.Sq 0X
|
|
are interpreted as hexadecimal numbers.
|
|
Numbers with a leading
|
|
.Sq 0
|
|
are interpreted as octal numbers unless they contain a non-octal digit.
|
|
Other numbers may be prefixed with a
|
|
.Sq +
|
|
or
|
|
.Sq -
|
|
sign.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm $
|
|
.Xc
|
|
Move the cursor to the end of a line.
|
|
If
|
|
.Ar count
|
|
is specified, additionally move the cursor down
|
|
.Ar count
|
|
\(mi 1 lines.
|
|
.Pp
|
|
.It Cm %
|
|
Move to the
|
|
.Cm matchchars
|
|
character matching
|
|
the one found at the cursor position or the closest to the right of it.
|
|
.Pp
|
|
.It Cm &
|
|
Repeat the previous substitution command on the current line.
|
|
.Pp
|
|
.It Xo
|
|
.Cm \(aq Ns Aq Ar character
|
|
.Xc
|
|
.It Xo
|
|
.Cm \` Ns Aq Ar character
|
|
.Xc
|
|
Return to the cursor position marked by the character
|
|
.Ar character ,
|
|
or, if
|
|
.Ar character
|
|
is
|
|
.Sq \(aq
|
|
or
|
|
.Sq \` ,
|
|
to the position of the cursor before the last of the following commands:
|
|
.Aq Cm control-A ,
|
|
.Aq Cm control-T ,
|
|
.Aq Cm control-] ,
|
|
.Cm % ,
|
|
.Cm \(aq ,
|
|
.Cm \` ,
|
|
.Cm (\& ,
|
|
.Cm )\& ,
|
|
.Cm / ,
|
|
.Cm ?\& ,
|
|
.Cm G ,
|
|
.Cm H ,
|
|
.Cm L ,
|
|
.Cm [[ ,
|
|
.Cm ]] ,
|
|
.Cm { ,
|
|
.Cm } .
|
|
The first form returns to the first non-blank character of the line marked by
|
|
.Ar character .
|
|
The second form returns to the line and column marked by
|
|
.Ar character .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm \&(
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm \&)
|
|
.Xc
|
|
Move
|
|
.Ar count
|
|
sentences backward or forward, respectively.
|
|
A sentence is an area of text that begins with the first nonblank character
|
|
following the previous sentence, paragraph, or section
|
|
boundary and continues until the next period, exclamation point,
|
|
or question mark character, followed by any number of closing parentheses,
|
|
brackets, double or single quote characters, followed by
|
|
either an end-of-line or two whitespace characters.
|
|
Groups of empty lines
|
|
.Pq or lines containing only whitespace characters
|
|
are treated as a single sentence.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm ,\&
|
|
.Xc
|
|
Reverse find character
|
|
.Pq i.e., the last Cm F , f , T No or Cm t No command
|
|
.Ar count
|
|
times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm -
|
|
.Xc
|
|
Move to the first non-blank character of the previous line,
|
|
.Ar count
|
|
times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm .\&
|
|
.Xc
|
|
Repeat the last
|
|
.Nm vi
|
|
command that modified text.
|
|
.Ar count
|
|
replaces both the
|
|
.Ar count
|
|
argument of the repeated command and that of the associated
|
|
.Ar motion .
|
|
If the
|
|
.Cm .\&
|
|
command repeats the
|
|
.Cm u
|
|
command, the change log is rolled forward or backward, depending on the action
|
|
of the
|
|
.Cm u
|
|
command.
|
|
.Pp
|
|
.It Xo
|
|
.Pf / Ns Ar RE
|
|
.Aq Li carriage-return
|
|
.Xc
|
|
.It Xo
|
|
.Pf / Ns Ar RE Ns /
|
|
.Op Ar offset
|
|
.Op Cm z
|
|
.Aq Li carriage-return
|
|
.Xc
|
|
.It Xo
|
|
.Pf ?\& Ns Ar RE
|
|
.Aq Li carriage-return
|
|
.Xc
|
|
.It Xo
|
|
.Pf ?\& Ns Ar RE Ns ?\&
|
|
.Op Ar offset
|
|
.Op Cm z
|
|
.Aq Li carriage-return
|
|
.Xc
|
|
.It Cm N
|
|
.It Cm n
|
|
Search forward
|
|
.Pq Sq /
|
|
or backward
|
|
.Pq Sq ?\&
|
|
for a regular expression.
|
|
.Cm n
|
|
and
|
|
.Cm N
|
|
repeat the last search in the same or opposite directions, respectively.
|
|
If
|
|
.Ar RE
|
|
is empty, the last search regular expression is used.
|
|
If
|
|
.Ar offset
|
|
is specified, the cursor is placed
|
|
.Ar offset
|
|
lines before or after the matched regular expression.
|
|
If either
|
|
.Cm n
|
|
or
|
|
.Cm N
|
|
commands are used as motion components for the
|
|
.Cm !\&
|
|
command, there will be no prompt for the text of the command and the previous
|
|
.Cm !\&
|
|
will be executed.
|
|
Multiple search patterns may be grouped together by delimiting them with
|
|
semicolons and zero or more whitespace characters.
|
|
These patterns are evaluated from left to right with the final cursor position
|
|
determined by the last search pattern.
|
|
A
|
|
.Cm z
|
|
command may be appended to the closed search expressions to reposition the
|
|
result line.
|
|
.Pp
|
|
.It Cm 0
|
|
Move to the first character in the current line.
|
|
.Pp
|
|
.It Cm :\&
|
|
Execute an
|
|
.Nm ex
|
|
command.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm ;\&
|
|
.Xc
|
|
Repeat the last character find
|
|
(i.e., the last
|
|
.Cm F , f , T
|
|
or
|
|
.Cm t
|
|
command)
|
|
.Ar count
|
|
times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm <
|
|
.Ar motion
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm >
|
|
.Ar motion
|
|
.Xc
|
|
Shift
|
|
.Ar count
|
|
lines left or right, respectively, by an amount of
|
|
.Cm shiftwidth .
|
|
.Pp
|
|
.It Cm @ Ar buffer
|
|
Execute a named
|
|
.Ar buffer
|
|
as
|
|
.Nm vi
|
|
commands.
|
|
The buffer may include
|
|
.Nm ex
|
|
commands too, but they must be expressed as a
|
|
.Cm \&:
|
|
command.
|
|
If
|
|
.Ar buffer
|
|
is
|
|
.Sq @
|
|
or
|
|
.Sq * ,
|
|
then the last buffer executed shall be used.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm A
|
|
.Xc
|
|
Enter input mode, appending the text after the end of the line.
|
|
If a
|
|
.Ar count
|
|
argument is given, the characters input are repeated
|
|
.Ar count
|
|
\(mi 1 times after input mode is exited.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm B
|
|
.Xc
|
|
Move backwards
|
|
.Ar count
|
|
bigwords.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Cm C
|
|
.Xc
|
|
Change text from the current position to the end-of-line.
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the deleted text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Cm D
|
|
.Xc
|
|
Delete text from the current position to the end-of-line.
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the deleted text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm E
|
|
.Xc
|
|
Move forward
|
|
.Ar count
|
|
end-of-bigwords.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm F Aq Ar character
|
|
.Xc
|
|
Search
|
|
.Ar count
|
|
times backward through the current line for
|
|
.Aq Ar character .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm G
|
|
.Xc
|
|
Move to line
|
|
.Ar count ,
|
|
or the last line of the file if
|
|
.Ar count
|
|
is not specified.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm H
|
|
.Xc
|
|
Move to the screen line
|
|
.Ar count
|
|
\(mi 1 lines below the top of the screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm I
|
|
.Xc
|
|
Enter input mode, inserting the text at the beginning of the line.
|
|
If a
|
|
.Ar count
|
|
argument is given,
|
|
the characters input are repeated
|
|
.Ar count
|
|
\(mi 1 more times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm J
|
|
.Xc
|
|
Join
|
|
.Ar count
|
|
lines with the current line.
|
|
The spacing between two joined lines is set to two whitespace characters if the
|
|
former ends with a question mark, a period or an exclamation point.
|
|
It is set to one whitespace character otherwise.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm L
|
|
.Xc
|
|
Move to the screen line
|
|
.Ar count
|
|
\(mi 1 lines above the bottom of the screen.
|
|
.Pp
|
|
.It Cm M
|
|
Move to the screen line in the middle of the screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm O
|
|
.Xc
|
|
Enter input mode, appending text in a new line above the current line.
|
|
If a
|
|
.Ar count
|
|
argument is given,
|
|
the characters input are repeated
|
|
.Ar count
|
|
\(mi 1 more times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Cm P
|
|
.Xc
|
|
Insert text from
|
|
.Ar buffer
|
|
before the current column if
|
|
.Ar buffer
|
|
is character-oriented or before the current line if it is line-oriented.
|
|
.Pp
|
|
.It Cm Q
|
|
Exit
|
|
.Nm vi
|
|
.Pq or visual
|
|
mode and switch to
|
|
.Nm ex
|
|
mode.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm R
|
|
.Xc
|
|
Enter input mode, replacing the characters in the current line.
|
|
If a
|
|
.Ar count
|
|
argument is given,
|
|
the characters input are repeated
|
|
.Ar count
|
|
\(mi 1 more times upon exit from insert mode.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm S
|
|
.Xc
|
|
Substitute
|
|
.Ar count
|
|
lines.
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the deleted text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm T
|
|
.Aq Ar character
|
|
.Xc
|
|
Search backwards,
|
|
.Ar count
|
|
times, through the current line for the character after the specified
|
|
.Aq Ar character .
|
|
.Pp
|
|
.It Cm U
|
|
Restore the current line to its state before the cursor last moved to it.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm W
|
|
.Xc
|
|
Move forward
|
|
.Ar count
|
|
bigwords.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm X
|
|
.Xc
|
|
Delete
|
|
.Ar count
|
|
characters before the cursor, on the current line.
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the deleted text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm Y
|
|
.Xc
|
|
Copy
|
|
.Pq or Dq yank
|
|
.Ar count
|
|
lines into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Cm ZZ
|
|
Write the file and exit
|
|
.Nm vi
|
|
if there are no more files to edit.
|
|
Entering two
|
|
.Dq quit
|
|
commands in a row ignores any remaining file to edit.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm [[
|
|
.Xc
|
|
Back up
|
|
.Ar count
|
|
section boundaries.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm ]]
|
|
.Xc
|
|
Move forward
|
|
.Ar count
|
|
section boundaries.
|
|
.Pp
|
|
.It Cm \(ha
|
|
Move to the first non-blank character on the current line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm _
|
|
.Xc
|
|
Move down
|
|
.Ar count
|
|
\(mi 1 lines, to the first non-blank character.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm a
|
|
.Xc
|
|
Enter input mode, appending the text after the cursor.
|
|
If a
|
|
.Ar count
|
|
argument is given,
|
|
the characters input are repeated
|
|
.Ar count
|
|
number of times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm b
|
|
.Xc
|
|
Move backwards
|
|
.Ar count
|
|
words.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm c
|
|
.Ar motion
|
|
.Xc
|
|
Change the region of text described by
|
|
.Ar count
|
|
and
|
|
.Ar motion .
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the changed text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm d
|
|
.Ar motion
|
|
.Xc
|
|
Delete the region of text described by
|
|
.Ar count
|
|
and
|
|
.Ar motion .
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the deleted text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm e
|
|
.Xc
|
|
Move forward
|
|
.Ar count
|
|
end-of-words.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm f Aq Ar character
|
|
.Xc
|
|
Search forward,
|
|
.Ar count
|
|
times, through the rest of the current line for
|
|
.Aq Ar character .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm i
|
|
.Xc
|
|
Enter input mode, inserting the text before the cursor.
|
|
If a
|
|
.Ar count
|
|
argument is given,
|
|
the characters input are repeated
|
|
.Ar count
|
|
number of times.
|
|
.Pp
|
|
.It Xo
|
|
.Cm m
|
|
.Aq Ar character
|
|
.Xc
|
|
Save the current context
|
|
.Pq line and column
|
|
as
|
|
.Aq Ar character .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm o
|
|
.Xc
|
|
Enter input mode, appending text in a new line under the current line.
|
|
If a
|
|
.Ar count
|
|
argument is given,
|
|
the characters input are repeated
|
|
.Ar count
|
|
\(mi 1 more times.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Cm p
|
|
.Xc
|
|
Append text from
|
|
.Ar buffer .
|
|
Text is appended after the current column if
|
|
.Ar buffer
|
|
is character oriented, or after the current line otherwise.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm r
|
|
.Aq Ar character
|
|
.Xc
|
|
Replace
|
|
.Ar count
|
|
characters with
|
|
.Ar character .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm s
|
|
.Xc
|
|
Substitute
|
|
.Ar count
|
|
characters in the current line starting with the current character.
|
|
If
|
|
.Ar buffer
|
|
is specified,
|
|
.Dq yank
|
|
the substituted text into
|
|
.Ar buffer .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm t
|
|
.Aq Ar character
|
|
.Xc
|
|
Search forward,
|
|
.Ar count
|
|
times, through the current line for the character immediately before
|
|
.Aq Ar character .
|
|
.Pp
|
|
.It Cm u
|
|
Undo the last change made to the file.
|
|
If repeated, the
|
|
.Cm u
|
|
command alternates between these two states.
|
|
The
|
|
.Cm .\&
|
|
command, when used immediately after
|
|
.Cm u ,
|
|
causes the change log to be rolled forward or backward, depending on the action
|
|
of the
|
|
.Cm u
|
|
command.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm w
|
|
.Xc
|
|
Move forward
|
|
.Ar count
|
|
words.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm x
|
|
.Xc
|
|
Delete
|
|
.Ar count
|
|
characters at the current cursor position, but no more than there are till the
|
|
end of the line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Cm y
|
|
.Ar motion
|
|
.Xc
|
|
Copy
|
|
.Pq or Dq yank
|
|
a text region specified by
|
|
.Ar count
|
|
and
|
|
.Ar motion
|
|
into a buffer.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count1
|
|
.Cm z
|
|
.Op Ar count2
|
|
.Cm type
|
|
.Xc
|
|
Redraw, optionally repositioning and resizing the screen.
|
|
If
|
|
.Ar count2
|
|
is specified, limit the screen size to
|
|
.Ar count2
|
|
lines.
|
|
The following
|
|
.Cm type
|
|
characters may be used:
|
|
.Bl -tag -width Ds
|
|
.It Cm +
|
|
If
|
|
.Ar count1
|
|
is specified, place the line
|
|
.Ar count1
|
|
at the top of the screen.
|
|
Otherwise, display the screen after the current screen.
|
|
.It Aq Cm carriage-return
|
|
Place the line
|
|
.Ar count1
|
|
at the top of the screen.
|
|
.It Cm .\&
|
|
Place the line
|
|
.Ar count1
|
|
in the center of the screen.
|
|
.It Cm -
|
|
Place the line
|
|
.Ar count1
|
|
at the bottom of the screen.
|
|
.It Cm \(ha
|
|
If
|
|
.Ar count1
|
|
is given,
|
|
display the screen before the screen before
|
|
.Ar count1
|
|
.Pq i.e., 2 screens before .
|
|
Otherwise, display the screen before the current screen.
|
|
.El
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm {\&
|
|
.Xc
|
|
Move backward
|
|
.Ar count
|
|
paragraphs.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar column
|
|
.Cm |\&
|
|
.Xc
|
|
Move to a specific
|
|
.Ar column
|
|
position on the current line.
|
|
If
|
|
.Ar column
|
|
is omitted,
|
|
move to the start of the current line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm }\&
|
|
.Xc
|
|
Move forward
|
|
.Ar count
|
|
paragraphs.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar count
|
|
.Cm \(ti
|
|
.Ar motion
|
|
.Xc
|
|
If the
|
|
.Cm tildeop
|
|
option is not set, reverse the case of the next
|
|
.Ar count
|
|
character(s) and no
|
|
.Ar motion
|
|
can be specified.
|
|
Otherwise
|
|
.Ar motion
|
|
is mandatory and
|
|
.Cm \(ti
|
|
reverses the case of the characters in a text region specified by the
|
|
.Ar count
|
|
and
|
|
.Ar motion .
|
|
.Pp
|
|
.It Aq Cm interrupt
|
|
Interrupt the current operation.
|
|
The
|
|
.Aq interrupt
|
|
character is usually
|
|
.Aq control-C .
|
|
.El
|
|
.Sh VI TEXT INPUT COMMANDS
|
|
The following section describes the commands available in the text input mode
|
|
of the
|
|
.Nm vi
|
|
editor.
|
|
.Pp
|
|
.Bl -tag -width Ds -compact
|
|
.It Aq Cm nul
|
|
Replay the previous input.
|
|
.Pp
|
|
.It Aq Cm control-D
|
|
Erase to the previous
|
|
.Ar shiftwidth
|
|
column boundary.
|
|
.Pp
|
|
.It Cm \(ha Ns Aq Cm control-D
|
|
Erase all of the autoindent characters, and reset the autoindent level.
|
|
.Pp
|
|
.It Cm 0 Ns Aq Cm control-D
|
|
Erase all of the autoindent characters.
|
|
.Pp
|
|
.It Aq Cm control-T
|
|
Insert sufficient
|
|
.Aq tab
|
|
and
|
|
.Aq space
|
|
characters to move forward to the next
|
|
.Ar shiftwidth
|
|
column boundary.
|
|
If the
|
|
.Cm expandtab
|
|
option is set, only insert
|
|
.Aq space
|
|
characters.
|
|
.Pp
|
|
.It Aq Cm erase
|
|
.It Aq Cm control-H
|
|
Erase the last character.
|
|
.Pp
|
|
.It Aq Cm literal next
|
|
Escape the next character from any special meaning.
|
|
The
|
|
.Aq literal\ \&next
|
|
character is usually
|
|
.Aq control-V .
|
|
.Pp
|
|
.It Aq Cm escape
|
|
Resolve all text input into the file, and return to command mode.
|
|
.Pp
|
|
.It Aq Cm line erase
|
|
Erase the current line.
|
|
.Pp
|
|
.It Aq Cm control-W
|
|
.It Aq Cm word erase
|
|
Erase the last word.
|
|
The definition of word is dependent on the
|
|
.Cm altwerase
|
|
and
|
|
.Cm ttywerase
|
|
options.
|
|
.Pp
|
|
.Sm off
|
|
.It Xo
|
|
.Aq Cm control-X
|
|
.Bq Cm 0-9A-Fa-f
|
|
.Cm +
|
|
.Xc
|
|
.Sm on
|
|
Insert a character with the specified hexadecimal value into the text.
|
|
.Pp
|
|
.It Aq Cm interrupt
|
|
Interrupt text input mode, returning to command mode.
|
|
The
|
|
.Aq interrupt
|
|
character is usually
|
|
.Aq control-C .
|
|
.El
|
|
.Sh EX COMMANDS
|
|
The following section describes the commands available in the
|
|
.Nm ex
|
|
editor.
|
|
In each entry below, the tag line is a usage synopsis for the command.
|
|
.Pp
|
|
.Bl -tag -width Ds -compact
|
|
.It Aq Cm end-of-file
|
|
Scroll the screen.
|
|
.Pp
|
|
.It Cm !\& Ar argument(s)
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm !\&
|
|
.Ar argument(s)
|
|
.Xc
|
|
Execute a shell command, or filter lines through a shell command.
|
|
.Pp
|
|
.It Cm \&"
|
|
A comment.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm nu Ns Op Cm mber
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm #
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Display the selected lines, each preceded with its line number.
|
|
.Pp
|
|
.It Cm @ Ar buffer
|
|
.It Cm * Ar buffer
|
|
Execute a buffer.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm < Ns Op Cm < ...
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Shift lines left.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm =
|
|
.Op Ar flags
|
|
.Xc
|
|
Display the line number of
|
|
.Ar line .
|
|
If
|
|
.Ar line
|
|
is not specified, display the line number of the last line in the file.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm > Ns Op Cm > ...
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Shift lines right.
|
|
.Pp
|
|
.It Xo
|
|
.Cm ab Ns Op Cm breviate
|
|
.Ar lhs rhs
|
|
.Xc
|
|
.Nm vi
|
|
only.
|
|
Add
|
|
.Ar lhs
|
|
as an abbreviation for
|
|
.Ar rhs
|
|
to the abbreviation list.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm a Ns Op Cm ppend Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
The input text is appended after the specified line.
|
|
.Pp
|
|
.It Cm ar Ns Op Cm gs
|
|
Display the argument list.
|
|
.Pp
|
|
.It Cm bg
|
|
.Nm vi
|
|
only.
|
|
Background the current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm c Ns Op Cm hange Ns
|
|
.Op Cm !\&
|
|
.Op Ar count
|
|
.Xc
|
|
The input text replaces the specified range.
|
|
.Pp
|
|
.It Xo
|
|
.Cm chd Ns Op Cm ir Ns
|
|
.Op Cm !\&
|
|
.Op Ar directory
|
|
.Xc
|
|
.It Xo
|
|
.Cm cd Ns Op Cm !\&
|
|
.Op Ar directory
|
|
.Xc
|
|
Change the current working directory.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm co Ns Op Cm py
|
|
.Ar line
|
|
.Op Ar flags
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm t
|
|
.Ar line
|
|
.Op Ar flags
|
|
.Xc
|
|
Copy the specified lines after the destination
|
|
.Ar line .
|
|
.Pp
|
|
.It Xo
|
|
.Cm cs Ns Op Cm cope
|
|
.Cm add | find | help | kill | reset
|
|
.Xc
|
|
Execute a Cscope command.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm d Ns Op Cm elete
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Delete the lines from the file.
|
|
.Pp
|
|
.It Xo
|
|
.Cm di Ns Op Cm splay
|
|
.Cm b Ns Oo Cm uffers Oc |
|
|
.Cm c Ns Oo Cm onnections Oc |
|
|
.Cm s Ns Oo Cm creens Oc |
|
|
.Cm t Ns Op Cm ags
|
|
.Xc
|
|
Display buffers, Cscope connections, screens or tags.
|
|
.Pp
|
|
.It Xo
|
|
.Op Cm Ee Ns
|
|
.Op Cm dit Ns
|
|
.Op Cm !\&
|
|
.Op Ar +cmd
|
|
.Op Ar file
|
|
.Xc
|
|
.It Xo
|
|
.Op Cm Ee Ns
|
|
.Cm x Ns Op Cm !\&
|
|
.Op Ar +cmd
|
|
.Op Ar file
|
|
.Xc
|
|
Edit a different file. The capitalized command opens a new screen below the
|
|
current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Cm exu Ns Op Cm sage
|
|
.Op Ar command
|
|
.Xc
|
|
Display usage for an
|
|
.Nm ex
|
|
command.
|
|
.Pp
|
|
.It Xo
|
|
.Cm f Ns Op Cm ile
|
|
.Op Ar file
|
|
.Xc
|
|
Display and optionally change the file name.
|
|
.Pp
|
|
.It Xo
|
|
.Op Cm Ff Ns
|
|
.Cm g
|
|
.Op Ar name
|
|
.Xc
|
|
.Nm vi
|
|
mode only.
|
|
Foreground the specified screen. The capitalized command opens a new screen
|
|
below the current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm g Ns Op Cm lobal
|
|
.No / Ns Ar pattern Ns /
|
|
.Op Ar commands
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm v
|
|
.No / Ns Ar pattern Ns /
|
|
.Op Ar commands
|
|
.Xc
|
|
Apply commands to lines matching
|
|
.Pq Sq global
|
|
or not matching
|
|
.Pq Sq v
|
|
a pattern.
|
|
.Pp
|
|
.It Cm he Ns Op Cm lp
|
|
Display a help message.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm i Ns Op Cm nsert Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
The input text is inserted before the specified line.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm j Ns Op Cm oin Ns
|
|
.Op Cm !\&
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Join lines of text together.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm l Ns Op Cm ist
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Display the lines unambiguously.
|
|
.Pp
|
|
.It Xo
|
|
.Cm map Ns Op Cm !\&
|
|
.Op Ar lhs rhs
|
|
.Xc
|
|
Define or display maps
|
|
.Pq for Nm vi No only .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm ma Ns Op Cm rk
|
|
.Aq Ar character
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm k Aq Ar character
|
|
.Xc
|
|
Mark the line with the mark
|
|
.Aq Ar character .
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm m Ns Op Cm ove
|
|
.Ar line
|
|
.Xc
|
|
Move the specified lines after the target line.
|
|
.Pp
|
|
.It Xo
|
|
.Cm mk Ns Op Cm exrc Ns
|
|
.Op Cm !\&
|
|
.Ar file
|
|
.Xc
|
|
Write the abbreviations, editor options and maps to the specified
|
|
.Ar file .
|
|
.Pp
|
|
.It Xo
|
|
.Op Cm Nn Ns
|
|
.Op Cm ext Ns
|
|
.Op Cm !\&
|
|
.Op Ar
|
|
.Xc
|
|
Edit the next file from the argument list. The capitalized command opens a
|
|
new screen below the current screen.
|
|
.\" .Pp
|
|
.\" .It Xo
|
|
.\" .Op Ar line
|
|
.\" .Cm o Ns Op Cm pen
|
|
.\" .No / Ns Ar pattern Ns /
|
|
.\" .Op Ar flags
|
|
.\" .Xc
|
|
.\" Enter open mode.
|
|
.Pp
|
|
.It Cm pre Ns Op Cm serve
|
|
Save the file in a form that can later be recovered using the
|
|
.Nm ex
|
|
.Fl r
|
|
option.
|
|
.Pp
|
|
.It Xo
|
|
.Op Cm \&Pp Ns
|
|
.Cm rev Ns Op Cm ious Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
Edit the previous file from the argument list. The capitalized command opens
|
|
a new screen below the current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm p Ns Op Cm rint
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Display the specified lines.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm pu Ns Op Cm t
|
|
.Op Ar buffer
|
|
.Xc
|
|
Append buffer contents to the current line.
|
|
.Pp
|
|
.It Xo
|
|
.Cm q Ns Op Cm uit Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
End the editing session.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm r Ns Op Cm ead Ns
|
|
.Op Cm !\&
|
|
.Op Ar file
|
|
.Xc
|
|
Read a file.
|
|
.Pp
|
|
.It Xo
|
|
.Cm rec Ns Op Cm over
|
|
.Ar file
|
|
.Xc
|
|
Recover
|
|
.Ar file
|
|
if it was previously saved.
|
|
.Pp
|
|
.It Xo
|
|
.Cm res Ns Op Cm ize
|
|
.Op Cm + Ns | Ns Cm - Ns
|
|
.Ar size
|
|
.Xc
|
|
.Nm vi
|
|
mode only.
|
|
Grow or shrink the current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Cm rew Ns Op Cm ind Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
Rewind the argument list.
|
|
.Pp
|
|
.It Xo
|
|
.Cm se Ns Op Cm t
|
|
.Sm off
|
|
.Op option Oo = Oo value Oc Oc \ \&...
|
|
.Sm on
|
|
.Pf \ \& Op nooption ...
|
|
.Op option? ...
|
|
.Op Ar all
|
|
.Xc
|
|
Display or set editor options.
|
|
.Pp
|
|
.It Cm sh Ns Op Cm ell
|
|
Run a shell program.
|
|
.Pp
|
|
.It Xo
|
|
.Cm so Ns Op Cm urce
|
|
.Ar file
|
|
.Xc
|
|
Read and execute
|
|
.Nm ex
|
|
commands from a file.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm s Ns Op Cm ubstitute
|
|
.Sm off
|
|
.Op / Ar pattern No / Ar replace No /
|
|
.Sm on
|
|
.Pf \ \& Op Ar options
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm &
|
|
.Op Ar options
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm \(ti
|
|
.Op Ar options
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Make substitutions.
|
|
The
|
|
.Ar replace
|
|
field may contain any of the following sequences:
|
|
.Bl -tag -width Ds
|
|
.It Sq \*(Am
|
|
The text matched by
|
|
.Ar pattern .
|
|
.It Sq \(ti
|
|
The replacement part of the previous
|
|
.Cm substitute
|
|
command.
|
|
.It Sq %
|
|
If this is the entire
|
|
.Ar replace
|
|
pattern, the replacement part of the previous
|
|
.Cm substitute
|
|
command.
|
|
.It Sq \e Ns Ar \(sh
|
|
Where
|
|
.Sq Ar \(sh
|
|
is an integer from 1 to 9, the text matched by the
|
|
.Ar # Ns 'th subexpression in
|
|
.Ar pattern .
|
|
.It Sq \eL
|
|
Causes the characters up to the end of the line of the next occurrence of
|
|
.Sq \eE
|
|
or
|
|
.Sq \ee
|
|
to be converted to lowercase.
|
|
.It Sq \el
|
|
Causes the next character to be converted to lowercase.
|
|
.It Sq \eU
|
|
Causes the characters up to the end of the line of the next occurrence of
|
|
.Sq \eE
|
|
or
|
|
.Sq \ee
|
|
to be converted to uppercase.
|
|
.It Sq \eu
|
|
Causes the next character to be converted to uppercase.
|
|
.El
|
|
.Pp
|
|
.It Xo
|
|
.Cm su Ns Op Cm spend Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
.It Xo
|
|
.Cm st Ns Op Cm op Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
.It Aq Cm suspend
|
|
Suspend the edit session.
|
|
The
|
|
.Aq suspend
|
|
character is usually
|
|
.Aq control-Z .
|
|
.Pp
|
|
.It Xo
|
|
.Op Cm Tt Ns
|
|
.Cm a Ns Op Cm g Ns
|
|
.Op Cm !\&
|
|
.Ar tagstring
|
|
.Xc
|
|
Edit the file containing the specified tag. The capitalized command opens a
|
|
new screen below the current screen.
|
|
.Pp
|
|
.It Xo
|
|
.Cm tagn Ns Op Cm ext Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
Edit the file containing the next context for the current tag.
|
|
.Pp
|
|
.It Xo
|
|
.Cm tagp Ns Op Cm op Ns
|
|
.Op Cm !\&
|
|
.Op Ar file | number
|
|
.Xc
|
|
Pop to the specified tag in the tags stack.
|
|
.Pp
|
|
.It Xo
|
|
.Cm tagpr Ns Op Cm ev Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
Edit the file containing the previous context for the current tag.
|
|
.Pp
|
|
.It Xo
|
|
.Cm tagt Ns Op Cm op Ns
|
|
.Op Cm !\&
|
|
.Xc
|
|
Pop to the least recent tag on the tags stack, clearing the stack.
|
|
.Pp
|
|
.It Xo
|
|
.Cm una Ns Op Cm bbreviate
|
|
.Ar lhs
|
|
.Xc
|
|
.Nm vi
|
|
only.
|
|
Delete an abbreviation.
|
|
.Pp
|
|
.It Cm u Ns Op Cm ndo
|
|
Undo the last change made to the file.
|
|
.Pp
|
|
.It Xo
|
|
.Cm unm Ns Op Cm ap Ns
|
|
.Op Cm !\&
|
|
.Ar lhs
|
|
.Xc
|
|
Unmap a mapped string.
|
|
.Pp
|
|
.It Cm ve Ns Op Cm rsion
|
|
Display the version of the
|
|
.Nm ex Ns / Ns Nm vi
|
|
editor.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm vi Ns Op Cm sual
|
|
.Op Ar type
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
.Nm ex
|
|
mode only.
|
|
Enter
|
|
.Nm vi .
|
|
.Pp
|
|
.It Xo
|
|
.Cm Vi Ns
|
|
.Op Cm sual Ns
|
|
.Op Cm !\&
|
|
.Op Ar +cmd
|
|
.Op Ar file
|
|
.Xc
|
|
.Nm vi
|
|
mode only. Edit a different file by opening a new screen below the current
|
|
screen.
|
|
.Pp
|
|
.It Xo
|
|
.Cm viu Ns Op Cm sage
|
|
.Op Ar command
|
|
.Xc
|
|
Display usage for a
|
|
.Nm vi
|
|
command.
|
|
.Pp
|
|
.It Xo
|
|
.Cm vs Ns Op Cm plit
|
|
.Op Ar +cmd
|
|
.Op Ar file
|
|
.Xc
|
|
Edit a different file by opening a new screen to the right of the current
|
|
screen.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm w Ns Op Cm rite Ns
|
|
.Op Cm !\&
|
|
.Op >>
|
|
.Op Ar file
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm w Ns Op Cm rite
|
|
.Cm !\& Ns Ar shell-command
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm wn Ns Op Cm !\&
|
|
.Op >>
|
|
.Op Ar file
|
|
.Xc
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm wq Ns Op Cm !\&
|
|
.Op >>
|
|
.Op Ar file
|
|
.Xc
|
|
Write the entire file, or
|
|
.Ar range .
|
|
.Sq !\&
|
|
overwrites a different, preexisting file.
|
|
.Sq >>
|
|
appends to a file that may preexist. Whitespace followed by
|
|
.Sq !\&
|
|
pipes the file to
|
|
.Ar shell-command .
|
|
.Cm wn
|
|
moves to the next file if writing succeeds.
|
|
.Cm wq
|
|
exits the editor if writing succeeds, unless there are more files to edit;
|
|
.Sq !\&
|
|
exits regardless.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm x Ns Op Cm it Ns
|
|
.Op Cm !\&
|
|
.Op Ar file
|
|
.Xc
|
|
Exit the editor,
|
|
writing the file if it has been modified.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar range
|
|
.Cm ya Ns Op Cm nk
|
|
.Op Ar buffer
|
|
.Op Ar count
|
|
.Xc
|
|
Copy the specified lines to a buffer.
|
|
.Pp
|
|
.It Xo
|
|
.Op Ar line
|
|
.Cm z
|
|
.Op Ar type
|
|
.Op Ar count
|
|
.Op Ar flags
|
|
.Xc
|
|
Adjust the window.
|
|
.El
|
|
.Sh SET OPTIONS
|
|
There are a large number of options that may be set
|
|
.Pq or unset
|
|
to change the editor's behavior.
|
|
This section describes the options, their abbreviations and their
|
|
default values.
|
|
.Pp
|
|
In each entry below, the first part of the tag line is the full name
|
|
of the option, followed by any equivalent abbreviations.
|
|
The part in square brackets is the default value of the option.
|
|
Most of the options are boolean, i.e., they are either on or off,
|
|
and do not have an associated value.
|
|
.Pp
|
|
Options apply to both
|
|
.Nm ex
|
|
and
|
|
.Nm vi
|
|
modes, unless otherwise specified.
|
|
.Bl -tag -width Ds
|
|
.It Cm altwerase Bq off
|
|
.Nm vi
|
|
only.
|
|
Select an alternate word erase algorithm.
|
|
.It Cm autoindent , ai Bq off
|
|
Automatically indent new lines.
|
|
.It Cm autoprint , ap Bq on
|
|
.Nm ex
|
|
only.
|
|
Display the current line automatically.
|
|
.It Cm autowrite , aw Bq off
|
|
Write modified files automatically when changing files or suspending the editor
|
|
session.
|
|
.It Cm backup Bq \&"\&"
|
|
Back up files before they are overwritten.
|
|
.It Cm beautify , bf Bq off
|
|
Discard control characters.
|
|
.It Cm cdpath Bo environment variable Ev CDPATH , or current directory Bc
|
|
The directory paths used as path prefixes for the
|
|
.Cm cd
|
|
command.
|
|
.It Cm cedit Bq no default
|
|
Set the character to edit the colon command-line history.
|
|
.It Cm columns , co Bq 80
|
|
Set the number of columns in the screen.
|
|
.It Cm comment Bq off
|
|
.Nm vi
|
|
only.
|
|
Skip leading comments in shell, C and C++ language files.
|
|
.It Cm directory , dir Bo environment variable Ev TMPDIR , or Pa /tmp Bc
|
|
The directory where temporary files are created.
|
|
.It Cm edcompatible , ed Bq off
|
|
Remember the values of the
|
|
.Sq c
|
|
and
|
|
.Sq g
|
|
suffixes to the
|
|
.Cm substitute
|
|
commands, instead of initializing them as unset for each new command.
|
|
.It Cm errorbells , eb Bq off
|
|
.Nm ex
|
|
only.
|
|
Announce error messages with a bell.
|
|
.It Cm escapetime Bq 1
|
|
The tenths of a second
|
|
.Nm ex Ns / Ns Nm vi
|
|
waits for a subsequent key to complete an
|
|
.Aq escape
|
|
key mapping.
|
|
.It Cm expandtab , et Bq off
|
|
Expand
|
|
.Aq tab
|
|
characters to
|
|
.Aq space
|
|
when inserting, replacing or shifting text, autoindenting,
|
|
indenting with
|
|
.Aq Ic control-T ,
|
|
outdenting with
|
|
.Aq Ic control-D ,
|
|
or
|
|
when filtering lines with the
|
|
.Cm !\&
|
|
command.
|
|
.It Cm exrc , ex Bq off
|
|
Read the startup files in the local directory.
|
|
.It Cm extended Bq off
|
|
Use extended regular expressions
|
|
.Pq EREs
|
|
rather than basic regular expressions
|
|
.Pq BREs .
|
|
See
|
|
.Xr re_format 7
|
|
for more information on regular expressions.
|
|
.It Cm filec Bq Aq tab
|
|
Set the character to perform file path completion on the colon command line.
|
|
.It Cm fileencoding , fe Bq auto detect
|
|
Set the encoding of the current file.
|
|
.It Cm flash Bq on
|
|
Flash the screen instead of beeping the keyboard on error.
|
|
.It Cm hardtabs, ht Bq 0
|
|
Set the spacing between hardware tab settings.
|
|
This option currently has no effect.
|
|
.It Cm iclower Bq off
|
|
Makes all regular expressions case-insensitive,
|
|
as long as an upper-case letter does not appear in the search string.
|
|
.It Cm ignorecase , ic Bq off
|
|
Ignore case differences in regular expressions.
|
|
.It Cm inputencoding , ie Bq locale
|
|
Set the encoding of your input characters.
|
|
.It Cm keytime Bq 6
|
|
The tenths of a second
|
|
.Nm ex Ns / Ns Nm vi
|
|
waits for a subsequent key to complete a key mapping.
|
|
.It Cm leftright Bq off
|
|
.Nm vi
|
|
only.
|
|
Do left-right scrolling.
|
|
.It Cm lines , li Bq 24
|
|
.Nm vi
|
|
only.
|
|
Set the number of lines in the screen.
|
|
.It Cm lisp Bq off
|
|
.Nm vi
|
|
only.
|
|
Modify various search commands and options to work with Lisp.
|
|
This option is not yet implemented.
|
|
.It Cm list Bq off
|
|
Display lines in an unambiguous fashion.
|
|
.It Cm lock Bq on
|
|
Attempt to get an exclusive lock on any file being edited, read or written.
|
|
.It Cm magic Bq on
|
|
When turned off, all regular expression characters except for
|
|
.Sq \(ha
|
|
and
|
|
.Sq \(Do
|
|
are treated as ordinary characters.
|
|
Preceding individual characters by
|
|
.Sq \e
|
|
re-enables them.
|
|
.It Cm matchchars Bq []{}()
|
|
Character pairs looked for by the
|
|
.Cm %
|
|
command.
|
|
.It Cm matchtime Bq 7
|
|
.Nm vi
|
|
only.
|
|
The tenths of a second
|
|
.Nm ex Ns / Ns Nm vi
|
|
pauses on the matching character when the
|
|
.Cm showmatch
|
|
option is set.
|
|
.It Cm mesg Bq on
|
|
Permit messages from other users.
|
|
.It Cm msgcat Bq /usr/share/vi/catalog/
|
|
Selects a message catalog to be used to display error and informational
|
|
messages in a specified language.
|
|
.It Cm modelines , modeline Bq off
|
|
Read the first and last few lines of each file for
|
|
.Nm ex
|
|
commands.
|
|
This option will never be implemented.
|
|
.It Cm noprint Bq \&"\&"
|
|
Characters that are never handled as printable characters.
|
|
.It Cm number , nu Bq off
|
|
Precede each line displayed with its current line number.
|
|
.It Cm octal Bq off
|
|
Display unknown characters as octal numbers, instead of the default
|
|
hexadecimal.
|
|
.It Cm open Bq on
|
|
.Nm ex
|
|
only.
|
|
If this option is not set, the
|
|
.Cm open
|
|
and
|
|
.Cm visual
|
|
commands are disallowed.
|
|
.It Cm optimize , opt Bq on
|
|
.Nm vi
|
|
only.
|
|
Optimize text throughput to dumb terminals.
|
|
This option is not yet implemented.
|
|
.It Cm paragraphs , para Bq "IPLPPPQPP LIpplpipbp"
|
|
.Nm vi
|
|
only.
|
|
Define additional paragraph boundaries for the
|
|
.Cm {\&
|
|
and
|
|
.Cm }\&
|
|
commands.
|
|
.It Cm path Bq \&"\&"
|
|
Define additional directories to search for files being edited.
|
|
.It Cm print Bq \&"\&"
|
|
Characters that are always handled as printable characters.
|
|
.It Cm prompt Bq on
|
|
.Nm ex
|
|
only.
|
|
Display a command prompt.
|
|
.It Cm readonly , ro Bq off
|
|
Mark the file and session as read-only.
|
|
.It Cm recdir Bq /var/tmp/vi.recover
|
|
The directory where recovery files are stored.
|
|
.It Cm redraw , re Bq off
|
|
.Nm vi
|
|
only.
|
|
Simulate an intelligent terminal on a dumb one.
|
|
This option is not yet implemented.
|
|
.It Cm remap Bq on
|
|
Remap keys until resolved.
|
|
.It Cm report Bq 5
|
|
Set the number of lines about which the editor reports changes or yanks.
|
|
.It Cm ruler Bq off
|
|
.Nm vi
|
|
only.
|
|
Display a row/column ruler on the colon command line.
|
|
.It Cm scroll , scr Bq "window size / 2"
|
|
Set the number of lines scrolled.
|
|
.It Cm searchincr Bq off
|
|
Makes the
|
|
.Cm /
|
|
and
|
|
.Cm ?\&
|
|
commands incremental.
|
|
.It Cm sections , sect Bq "NHSHH HUnhsh"
|
|
.Nm vi
|
|
only.
|
|
Define additional section boundaries for the
|
|
.Cm [[
|
|
and
|
|
.Cm ]]
|
|
commands.
|
|
.It Cm secure Bq off
|
|
Turns off all access to external programs.
|
|
.It Cm shell , sh Bo environment variable Ev SHELL , or Pa /bin/sh Bc
|
|
Select the shell used by the editor.
|
|
.It Cm shellmeta Bq \(ti{[*?$\`\(aq\&"\e
|
|
Set the meta characters checked to determine if file name expansion
|
|
is necessary.
|
|
.It Cm shiftwidth , sw Bq 8
|
|
Set the autoindent and shift command indentation width.
|
|
.It Cm showmatch , sm Bq off
|
|
.Nm vi
|
|
only.
|
|
Note the left matching characters when the right ones are inserted.
|
|
.It Cm showmode , smd Bq off
|
|
.Nm vi
|
|
only.
|
|
Display the current editor mode and a
|
|
.Dq modified
|
|
flag.
|
|
.It Cm sidescroll Bq 16
|
|
.Nm vi
|
|
only.
|
|
Set the amount a left-right scroll will shift.
|
|
.It Cm slowopen , slow Bq off
|
|
Delay display updating during text input.
|
|
This option is not yet implemented.
|
|
.It Cm sourceany Bq off
|
|
Read startup files not owned by the current user.
|
|
This option will never be implemented.
|
|
.It Cm tabstop , ts Bq 8
|
|
This option sets tab widths for the editor display.
|
|
.It Cm taglength , tl Bq 0
|
|
Set the number of significant characters in tag names.
|
|
.It Cm tags , tag Bq tags
|
|
Set the list of tags files.
|
|
.It Xo
|
|
.Cm term , ttytype , tty
|
|
.Bq environment variable Ev TERM
|
|
.Xc
|
|
Set the terminal type.
|
|
.It Cm terse Bq off
|
|
This option has historically made editor messages less verbose.
|
|
It has no effect in this implementation.
|
|
.It Cm tildeop Bq off
|
|
Modify the
|
|
.Cm \(ti
|
|
command to take an associated motion.
|
|
.It Cm timeout , to Bq on
|
|
Time out on keys which may be mapped.
|
|
.It Cm ttywerase Bq off
|
|
.Nm vi
|
|
only.
|
|
Select an alternate erase algorithm.
|
|
.It Cm verbose Bq off
|
|
.Nm vi
|
|
only.
|
|
Display an error message for every error.
|
|
.It Cm w300 Bq no default
|
|
.Nm vi
|
|
only.
|
|
Set the window size if the baud rate is less than 1200 baud.
|
|
.It Cm w1200 Bq no default
|
|
.Nm vi
|
|
only.
|
|
Set the window size if the baud rate is equal to 1200 baud.
|
|
.It Cm w9600 Bq no default
|
|
.Nm vi
|
|
only.
|
|
Set the window size if the baud rate is greater than 1200 baud.
|
|
.It Cm warn Bq on
|
|
.Nm ex
|
|
only.
|
|
This option causes a warning message to be printed on the terminal
|
|
if the file has been modified since it was last written, before a
|
|
.Cm !\&
|
|
command.
|
|
.It Xo
|
|
.Cm window , w , wi
|
|
.Bq environment variable Ev LINES No \(mi 1
|
|
.Xc
|
|
Set the window size for the screen.
|
|
.It Cm windowname Bq off
|
|
Change the icon/window name to the current file name.
|
|
.It Cm wraplen , wl Bq 0
|
|
.Nm vi
|
|
only.
|
|
Break lines automatically,
|
|
the specified number of columns from the left-hand margin.
|
|
If both the
|
|
.Cm wraplen
|
|
and
|
|
.Cm wrapmargin
|
|
edit options are set, the
|
|
.Cm wrapmargin
|
|
value is used.
|
|
.It Cm wrapmargin , wm Bq 0
|
|
.Nm vi
|
|
only.
|
|
Break lines automatically,
|
|
the specified number of columns from the right-hand margin.
|
|
If both the
|
|
.Cm wraplen
|
|
and
|
|
.Cm wrapmargin
|
|
edit options are set, the
|
|
.Cm wrapmargin
|
|
value is used.
|
|
.It Cm wrapscan , ws Bq on
|
|
Set searches to wrap around the end or beginning of the file.
|
|
.It Cm writeany , wa Bq off
|
|
Turn off file-overwriting checks.
|
|
.El
|
|
.Sh ENVIRONMENT
|
|
.Bl -tag -width "COLUMNS"
|
|
.It Ev COLUMNS
|
|
The number of columns on the screen.
|
|
This value overrides any system or terminal specific values.
|
|
If the
|
|
.Ev COLUMNS
|
|
environment variable is not set when
|
|
.Nm ex Ns / Ns Nm vi
|
|
runs, or the
|
|
.Cm columns
|
|
option is explicitly reset by the user,
|
|
.Nm ex Ns / Ns Nm vi
|
|
enters the value into the environment.
|
|
.It Ev EXINIT
|
|
A list of
|
|
.Nm ex
|
|
startup commands, read after
|
|
.Pa /etc/vi.exrc
|
|
unless the variable
|
|
.Ev NEXINIT
|
|
is also set.
|
|
.It Ev HOME
|
|
The user's home directory, used as the initial directory path for the startup
|
|
.Pa $HOME/.nexrc
|
|
and
|
|
.Pa $HOME/.exrc
|
|
files.
|
|
This value is also used as the default directory for the
|
|
.Cm cd
|
|
command.
|
|
.It Ev LINES
|
|
The number of rows on the screen.
|
|
This value overrides any system or terminal specific values.
|
|
If the
|
|
.Ev LINES
|
|
environment variable is not set when
|
|
.Nm ex Ns / Ns Nm vi
|
|
runs, or the
|
|
.Cm lines
|
|
option is explicitly reset by the user,
|
|
.Nm ex Ns / Ns Nm vi
|
|
enters the value into the environment.
|
|
.It Ev NEXINIT
|
|
A list of
|
|
.Nm ex
|
|
startup commands, read after
|
|
.Pa /etc/vi.exrc .
|
|
.It Ev SHELL
|
|
The user's shell of choice
|
|
.Pq see also the Cm shell No option .
|
|
.It Ev TERM
|
|
The user's terminal type.
|
|
The default is the type
|
|
.Dq unknown .
|
|
If the
|
|
.Ev TERM
|
|
environment variable is not set when
|
|
.Nm ex Ns / Ns Nm vi
|
|
runs, or the
|
|
.Cm term
|
|
option is explicitly reset by the user,
|
|
.Nm ex Ns / Ns Nm vi
|
|
enters the value into the environment.
|
|
.It Ev TMPDIR
|
|
The location used to store temporary files
|
|
.Pq see also the Cm directory No edit option .
|
|
.El
|
|
.Sh ASYNCHRONOUS EVENTS
|
|
.Bl -tag -width "SIGWINCH" -compact
|
|
.It Dv SIGALRM
|
|
.Nm vi Ns / Ns Nm ex
|
|
uses this signal for periodic backups of file modifications and to display
|
|
.Dq busy
|
|
messages when operations are likely to take a long time.
|
|
.Pp
|
|
.It Dv SIGHUP
|
|
.It Dv SIGTERM
|
|
If the current buffer has changed since it was last written in its entirety,
|
|
the editor attempts to save the modified file so it can be later recovered.
|
|
See the
|
|
.Nm vi Ns / Ns Nm ex
|
|
reference manual section
|
|
.Sx Recovery
|
|
for more information.
|
|
.Pp
|
|
.It Dv SIGINT
|
|
When an interrupt occurs, the current operation is halted
|
|
and the editor returns to the command level.
|
|
If interrupted during text input,
|
|
the text already input is resolved into the file as if the text
|
|
input had been normally terminated.
|
|
.Pp
|
|
.It Dv SIGWINCH
|
|
The screen is resized.
|
|
See the
|
|
.Nm vi Ns / Ns Nm ex
|
|
reference manual section
|
|
.Sx Sizing the Screen
|
|
for more information.
|
|
.\" .Pp
|
|
.\" .It Dv SIGCONT
|
|
.\" .It Dv SIGTSTP
|
|
.\" .Nm vi Ns / Ns Nm ex
|
|
.\" ignores these signals.
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width "/var/tmp/vi.recover"
|
|
.It Pa /bin/sh
|
|
The default user shell.
|
|
.It Pa /etc/vi.exrc
|
|
System-wide
|
|
.Nm vi
|
|
startup file.
|
|
It is read for
|
|
.Nm ex
|
|
commands first in the startup sequence.
|
|
Must be owned by root or the user,
|
|
and writable only by the owner.
|
|
.It Pa /tmp
|
|
Temporary file directory.
|
|
.It Pa /var/tmp/vi.recover
|
|
The default recovery file directory.
|
|
.It Pa $HOME/.nexrc
|
|
First choice for user's home directory startup file, read for
|
|
.Nm ex
|
|
commands right after
|
|
.Pa /etc/vi.exrc
|
|
unless either
|
|
.Ev NEXINIT
|
|
or
|
|
.Ev EXINIT
|
|
are set.
|
|
Must be owned by root or the user,
|
|
and writable only by the owner.
|
|
.It Pa $HOME/.exrc
|
|
Second choice for user's home directory startup file, read for
|
|
.Nm ex
|
|
commands under the same conditions as
|
|
.Pa $HOME/.nexrc .
|
|
.It Pa .nexrc
|
|
First choice for local directory startup file, read for
|
|
.Nm ex
|
|
commands at the end of the startup sequence if the
|
|
.Cm exrc
|
|
option was turned on earlier.
|
|
Must be owned by the user
|
|
and writable only by the owner.
|
|
.It Pa .exrc
|
|
Second choice for local directory startup file, read for
|
|
.Nm ex
|
|
commands under the same conditions as
|
|
.Pa .nexrc .
|
|
.El
|
|
.Sh EXIT STATUS
|
|
The
|
|
.Nm ex
|
|
and
|
|
.Nm vi
|
|
utilities exit 0 on success,
|
|
and \*(Gt0 if an error occurs.
|
|
.Sh SEE ALSO
|
|
.Xr ctags 1 ,
|
|
.Xr iconv 1 ,
|
|
.Xr re_format 7
|
|
.Rs
|
|
.%T vi/ex reference manual
|
|
.%U https://docs.freebsd.org/44doc/usd/13.viref/paper.pdf
|
|
.Re
|
|
.Sh STANDARDS
|
|
.Nm nex Ns / Ns Nm nvi
|
|
is close to
|
|
.St -p1003.1-2008 .
|
|
That document differs from historical
|
|
.Nm ex Ns / Ns Nm vi
|
|
practice in several places; there are changes to be made on both sides.
|
|
.Sh HISTORY
|
|
The
|
|
.Nm ex
|
|
editor first appeared in
|
|
.Bx 1 .
|
|
The
|
|
.Nm nex Ns / Ns Nm nvi
|
|
replacements for the
|
|
.Nm ex Ns / Ns Nm vi
|
|
editor first appeared in
|
|
.Bx 4.4 .
|
|
.Sh AUTHORS
|
|
.An Bill Joy
|
|
wrote the original version of
|
|
.Nm ex
|
|
in 1977.
|