mirror of https://github.com/mkerrisk/man-pages
4964 lines
151 KiB
Groff
4964 lines
151 KiB
Groff
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
|
.TH "VI" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
|
.\" vi
|
|
.SH NAME
|
|
vi \- screen-oriented (visual) display editor
|
|
.SH SYNOPSIS
|
|
.LP
|
|
\fBvi\fP \fB[\fP\fB-rR\fP\fB][\fP\fB-c\fP \fIcommand\fP\fB][\fP\fB-t\fP
|
|
\fItagstring\fP\fB][\fP\fB-w\fP \fIsize\fP\fB][\fP\fIfile\fP \fB...\fP\fB]\fP\fB\fP
|
|
.SH DESCRIPTION
|
|
.LP
|
|
This utility shall be provided on systems that both support the User
|
|
Portability Utilities option and define the
|
|
POSIX2_CHAR_TERM symbol. On other systems it is optional.
|
|
.LP
|
|
The \fIvi\fP (visual) utility is a screen-oriented text editor. Only
|
|
the open and visual modes of the editor are described in
|
|
IEEE\ Std\ 1003.1-2001; see the line editor \fIex\fP for additional
|
|
editing
|
|
capabilities used in \fIvi\fP. The user can switch back and forth
|
|
between \fIvi\fP and \fIex\fP and execute \fIex\fP commands from within
|
|
\fIvi\fP.
|
|
.LP
|
|
This reference page uses the term \fIedit buffer\fP to describe the
|
|
current working text. No specific implementation is implied
|
|
by this term. All editing changes are performed on the edit buffer,
|
|
and no changes to it shall affect any file until an editor
|
|
command writes the file.
|
|
.LP
|
|
When using \fIvi\fP, the terminal screen acts as a window into the
|
|
editing buffer. Changes made to the editing buffer shall be
|
|
reflected in the screen display; the position of the cursor on the
|
|
screen shall indicate the position within the editing
|
|
buffer.
|
|
.LP
|
|
Certain terminals do not have all the capabilities necessary to support
|
|
the complete \fIvi\fP definition. When these commands
|
|
cannot be supported on such terminals, this condition shall not produce
|
|
an error message such as "not an editor command" or
|
|
report a syntax error. The implementation may either accept the commands
|
|
and produce results on the screen that are the result of
|
|
an unsuccessful attempt to meet the requirements of this volume of
|
|
IEEE\ Std\ 1003.1-2001 or report an error describing the
|
|
terminal-related deficiency.
|
|
.SH OPTIONS
|
|
.LP
|
|
The \fIvi\fP utility shall conform to the Base Definitions volume
|
|
of IEEE\ Std\ 1003.1-2001, Section 12.2, Utility Syntax Guidelines.
|
|
.LP
|
|
The following options shall be supported:
|
|
.TP 7
|
|
\fB-c\ \fP \fIcommand\fP
|
|
See the \fIex\fP command description of the \fB-c\fP option.
|
|
.TP 7
|
|
\fB-r\fP
|
|
See the \fIex\fP command description of the \fB-r\fP option.
|
|
.TP 7
|
|
\fB-R\fP
|
|
See the \fIex\fP command description of the \fB-R\fP option.
|
|
.TP 7
|
|
\fB-t\ \fP \fItagstring\fP
|
|
See the \fIex\fP command description of the \fB-t\fP option.
|
|
.TP 7
|
|
\fB-w\ \fP \fIsize\fP
|
|
See the \fIex\fP command description of the \fB-w\fP option.
|
|
.sp
|
|
.SH OPERANDS
|
|
.LP
|
|
See the OPERANDS section of the \fIex\fP command for a description
|
|
of the operands supported
|
|
by the \fIvi\fP command.
|
|
.SH STDIN
|
|
.LP
|
|
If standard input is not a terminal device, the results are undefined.
|
|
The standard input consists of a series of commands and
|
|
input text, as described in the EXTENDED DESCRIPTION section.
|
|
.LP
|
|
If a read from the standard input returns an error, or if the editor
|
|
detects an end-of-file condition from the standard input,
|
|
it shall be equivalent to a SIGHUP asynchronous event.
|
|
.SH INPUT FILES
|
|
.LP
|
|
See the INPUT FILES section of the \fIex\fP command for a description
|
|
of the input files
|
|
supported by the \fIvi\fP command.
|
|
.SH ENVIRONMENT VARIABLES
|
|
.LP
|
|
See the ENVIRONMENT VARIABLES section of the \fIex\fP command for
|
|
the environment variables
|
|
that affect the execution of the \fIvi\fP command.
|
|
.SH ASYNCHRONOUS EVENTS
|
|
.LP
|
|
See the ASYNCHRONOUS EVENTS section of the \fIex\fP for the asynchronous
|
|
events that affect
|
|
the execution of the \fIvi\fP command.
|
|
.SH STDOUT
|
|
.LP
|
|
If standard output is not a terminal device, undefined results occur.
|
|
.LP
|
|
Standard output may be used for writing prompts to the user, for informational
|
|
messages, and for writing lines from the
|
|
file.
|
|
.SH STDERR
|
|
.LP
|
|
If standard output is not a terminal device, undefined results occur.
|
|
.LP
|
|
The standard error shall be used only for diagnostic messages.
|
|
.SH OUTPUT FILES
|
|
.LP
|
|
See the OUTPUT FILES section of the \fIex\fP command for a description
|
|
of the output files
|
|
supported by the \fIvi\fP command.
|
|
.SH EXTENDED DESCRIPTION
|
|
.LP
|
|
If the terminal does not have the capabilities necessary to support
|
|
an unspecified portion of the \fIvi\fP definition,
|
|
implementations shall start initially in \fIex\fP mode or open mode.
|
|
Otherwise, after
|
|
initialization, \fIvi\fP shall be in command mode; text input mode
|
|
can be entered by one of several commands used to insert or
|
|
change text. In text input mode, <ESC> can be used to return to command
|
|
mode; other uses of <ESC> are described later
|
|
in this section; see Terminate Command or Input Mode .
|
|
.SS Initialization in ex and vi
|
|
.LP
|
|
See \fIInitialization in ex and vi\fP for a description of \fIex\fP
|
|
and \fIvi\fP initialization for the \fIvi\fP utility.
|
|
.SS Command Descriptions in vi
|
|
.LP
|
|
The following symbols are used in this reference page to represent
|
|
arguments to commands.
|
|
.TP 7
|
|
\fIbuffer\fP
|
|
See the description of \fIbuffer\fP in the EXTENDED DESCRIPTION section
|
|
of the \fIex\fP
|
|
utility; see \fICommand Descriptions in ex\fP .
|
|
.LP
|
|
In open and visual mode, when a command synopsis shows both [ \fIbuffer\fP]
|
|
and [ \fIcount\fP] preceding the command name,
|
|
they can be specified in either order.
|
|
.TP 7
|
|
\fIcount\fP
|
|
A positive integer used as an optional argument to most commands,
|
|
either to give a repeat count or as a size. This argument is
|
|
optional and shall default to 1 unless otherwise specified.
|
|
.LP
|
|
The Synopsis lines for the \fIvi\fP commands <control>-G, <control>-L,
|
|
<control>-R, <control>-],
|
|
\fB%\fP, \fB&\fP, \fB^\fP, \fBD\fP, \fBm\fP, \fBM\fP, \fBQ\fP, \fBu\fP,
|
|
\fBU\fP, and \fBZZ\fP do not have
|
|
\fIcount\fP as an optional argument. Regardless, it shall not be an
|
|
error to specify a \fIcount\fP to these commands, and any
|
|
specified \fIcount\fP shall be ignored.
|
|
.TP 7
|
|
\fImotion\fP
|
|
An optional trailing argument used by the \fB!\fP, \fB<\fP, \fB>\fP,
|
|
\fBc\fP, \fBd\fP, and \fBy\fP commands, which
|
|
is used to indicate the region of text that shall be affected by the
|
|
command. The motion can be either one of the command
|
|
characters repeated or one of several other \fIvi\fP commands (listed
|
|
in the following table). Each of the applicable commands
|
|
specifies the region of text matched by repeating the command; each
|
|
command that can be used as a motion command specifies the
|
|
region of text it affects.
|
|
.LP
|
|
Commands that take \fImotion\fP arguments operate on either lines
|
|
or characters, depending on the circumstances. When operating
|
|
on lines, all lines that fall partially or wholly within the text
|
|
region specified for the command shall be affected. When
|
|
operating on characters, only the exact characters in the specified
|
|
text region shall be affected. Each motion command specifies
|
|
this individually.
|
|
.LP
|
|
When commands that may be motion commands are not used as motion commands,
|
|
they shall set the current position to the current
|
|
line and column as specified.
|
|
.LP
|
|
The following commands shall be valid cursor motion commands:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<apostrophe> ( - j H
|
|
<carriage-return> ) $ k L
|
|
<comma> [[ % l M
|
|
<control>-H ]] _ n N
|
|
<control>-N { ; t T
|
|
<control>-P } ? w W
|
|
<grave accent> ^ b B
|
|
<newline> + e E
|
|
<space> | f F
|
|
<zero> / h G
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
Any \fIcount\fP that is specified to a command that has an associated
|
|
motion command shall be applied to the motion command. If
|
|
a \fIcount\fP is applied to both the command and its associated motion
|
|
command, the effect shall be multiplicative.
|
|
.sp
|
|
.LP
|
|
The following symbols are used in this section to specify locations
|
|
in the edit buffer:
|
|
.TP 7
|
|
\fIcurrent\ character\fP
|
|
.sp
|
|
The character that is currently indicated by the cursor.
|
|
.TP 7
|
|
\fIend\ of\ a\ line\fP
|
|
.sp
|
|
The point located between the last non- <newline> (if any) and the
|
|
terminating <newline> of a line. For an empty line,
|
|
this location coincides with the beginning of the line.
|
|
.TP 7
|
|
\fIend\ of\ the\ edit\ buffer\fP
|
|
.sp
|
|
The location corresponding to the end of the last line in the edit
|
|
buffer.
|
|
.sp
|
|
.LP
|
|
The following symbols are used in this section to specify command
|
|
actions:
|
|
.TP 7
|
|
\fIbigword\fP
|
|
In the POSIX locale, \fIvi\fP shall recognize four kinds of \fIbigwords\fP:
|
|
.RS
|
|
.IP " 1." 4
|
|
A maximal sequence of non- <blank>s preceded and followed by <blank>s
|
|
or the beginning or end of a line or the edit
|
|
buffer
|
|
.LP
|
|
.IP " 2." 4
|
|
One or more sequential blank lines
|
|
.LP
|
|
.IP " 3." 4
|
|
The first character in the edit buffer
|
|
.LP
|
|
.IP " 4." 4
|
|
The last non- <newline> in the edit buffer
|
|
.LP
|
|
.RE
|
|
.TP 7
|
|
\fIword\fP
|
|
In the POSIX locale, \fIvi\fP shall recognize five kinds of words:
|
|
.RS
|
|
.IP " 1." 4
|
|
A maximal sequence of letters, digits, and underscores, delimited
|
|
at both ends by:
|
|
.RS
|
|
.IP " *" 3
|
|
Characters other than letters, digits, or underscores
|
|
.LP
|
|
.IP " *" 3
|
|
The beginning or end of a line
|
|
.LP
|
|
.IP " *" 3
|
|
The beginning or end of the edit buffer
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.IP " 2." 4
|
|
A maximal sequence of characters other than letters, digits, underscores,
|
|
or <blank>s, delimited at both ends by:
|
|
.RS
|
|
.IP " *" 3
|
|
A letter, digit, underscore
|
|
.LP
|
|
.IP " *" 3
|
|
<blank>s
|
|
.LP
|
|
.IP " *" 3
|
|
The beginning or end of a line
|
|
.LP
|
|
.IP " *" 3
|
|
The beginning or end of the edit buffer
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.IP " 3." 4
|
|
One or more sequential blank lines
|
|
.LP
|
|
.IP " 4." 4
|
|
The first character in the edit buffer
|
|
.LP
|
|
.IP " 5." 4
|
|
The last non- <newline> in the edit buffer
|
|
.LP
|
|
.RE
|
|
.TP 7
|
|
\fIsection\ boundary\fP
|
|
.sp
|
|
A \fIsection boundary\fP is one of the following:
|
|
.RS
|
|
.IP " 1." 4
|
|
A line whose first character is a <form-feed>
|
|
.LP
|
|
.IP " 2." 4
|
|
A line whose first character is an open curly brace ( \fB'{'\fP )
|
|
.LP
|
|
.IP " 3." 4
|
|
A line whose first character is a period and whose second and third
|
|
characters match a two-character pair in the \fBsections\fP
|
|
edit option (see \fIed\fP)
|
|
.LP
|
|
.IP " 4." 4
|
|
A line whose first character is a period and whose only other character
|
|
matches the first character of a two-character pair in
|
|
the \fBsections\fP edit option, where the second character of the
|
|
two-character pair is a <space>
|
|
.LP
|
|
.IP " 5." 4
|
|
The first line of the edit buffer
|
|
.LP
|
|
.IP " 6." 4
|
|
The last line of the edit buffer if the last line of the edit buffer
|
|
is empty or if it is a \fB]]\fP or \fB}\fP command;
|
|
otherwise, the last non- <newline> of the last line of the edit buffer
|
|
.LP
|
|
.RE
|
|
.TP 7
|
|
\fIparagraph\ boundary\fP
|
|
.sp
|
|
A \fIparagraph boundary\fP is one of the following:
|
|
.RS
|
|
.IP " 1." 4
|
|
A section boundary
|
|
.LP
|
|
.IP " 2." 4
|
|
A line whose first character is a period and whose second and third
|
|
characters match a two-character pair in the
|
|
\fBparagraphs\fP edit option (see \fIed\fP)
|
|
.LP
|
|
.IP " 3." 4
|
|
A line whose first character is a period and whose only other character
|
|
matches the first character of a two-character pair in
|
|
the \fIparagraphs\fP edit option, where the second character of the
|
|
two-character pair is a <space>
|
|
.LP
|
|
.IP " 4." 4
|
|
One or more sequential blank lines
|
|
.LP
|
|
.RE
|
|
.TP 7
|
|
\fIremembered\ search\ direction\fP
|
|
.sp
|
|
See the description of \fIremembered search direction\fP in \fIed\fP.
|
|
.TP 7
|
|
\fIsentence\ boundary\fP
|
|
.sp
|
|
A \fIsentence boundary\fP is one of the following:
|
|
.RS
|
|
.IP " 1." 4
|
|
A paragraph boundary
|
|
.LP
|
|
.IP " 2." 4
|
|
The first non- <blank> that occurs after a paragraph boundary
|
|
.LP
|
|
.IP " 3." 4
|
|
The first non- <blank> that occurs after a period ( \fB'.'\fP ), exclamation
|
|
mark ( \fB'!'\fP ), or question mark (
|
|
\fB'?'\fP ), followed by two <space>s or the end of a line; any number
|
|
of closing parenthesis ( \fB')'\fP ), closing
|
|
brackets ( \fB']'\fP ), double quote ( \fB' ),'\fP or single quote
|
|
( \fB'"\fP ) characters can appear between the
|
|
punctuation mark and the two <space>s or end-of-line
|
|
.LP
|
|
.RE
|
|
.sp
|
|
.LP
|
|
In the remainder of the description of the \fIvi\fP utility, the term
|
|
"buffer line" refers to a line in the edit buffer and
|
|
the term "display line" refers to the line or lines on the display
|
|
screen used to display one buffer line. The term "current
|
|
line" refers to a specific "buffer line".
|
|
.LP
|
|
If there are display lines on the screen for which there are no corresponding
|
|
buffer lines because they correspond to lines that
|
|
would be after the end of the file, they shall be displayed as a single
|
|
tilde ( \fB'~'\fP ) character, plus the terminating
|
|
<newline>.
|
|
.LP
|
|
The last line of the screen shall be used to report errors or display
|
|
informational messages. It shall also be used to display
|
|
the input for "line-oriented commands" ( \fB/\fP, \fB?\fP, \fB:\fP,
|
|
and \fB!\fP). When a line-oriented command is executed,
|
|
the editor shall enter text input mode on the last line on the screen,
|
|
using the respective command characters as prompt
|
|
characters. (In the case of the \fB!\fP command, the associated motion
|
|
shall be entered by the user before the editor enters text
|
|
input mode.) The line entered by the user shall be terminated by a
|
|
<newline>, a non- <control>-V-escaped
|
|
<carriage-return>, or unescaped <ESC>. It is unspecified if more characters
|
|
than require a display width minus one
|
|
column number of screen columns can be entered.
|
|
.LP
|
|
If any command is executed that overwrites a portion of the screen
|
|
other than the last line of the screen (for example, the \fIex\fP
|
|
\fBsuspend\fP or \fB!\fP commands), other than the \fIex\fP \fBshell\fP
|
|
command, the user shall be prompted for a character before the screen
|
|
is
|
|
refreshed and the edit session continued.
|
|
.LP
|
|
<tab>s shall take up the number of columns on the screen set by the
|
|
\fBtabstop\fP edit option (see \fIed\fP), unless there are less than
|
|
that number of columns before the display margin that will cause
|
|
the displayed line to be folded; in this case, they shall only take
|
|
up the number of columns up to that boundary.
|
|
.LP
|
|
The cursor shall be placed on the current line and relative to the
|
|
current column as specified by each command described in the
|
|
following sections.
|
|
.LP
|
|
In open mode, if the current line is not already displayed, then it
|
|
shall be displayed.
|
|
.LP
|
|
In visual mode, if the current line is not displayed, then the lines
|
|
that are displayed shall be expanded, scrolled, or redrawn
|
|
to cause an unspecified portion of the current line to be displayed.
|
|
If the screen is redrawn, no more than the number of display
|
|
lines specified by the value of the \fBwindow\fP edit option shall
|
|
be displayed (unless the current line cannot be completely
|
|
displayed in the number of display lines specified by the \fBwindow\fP
|
|
edit option) and the current line shall be positioned as
|
|
close to the center of the displayed lines as possible (within the
|
|
constraints imposed by the distance of the line from the
|
|
beginning or end of the edit buffer). If the current line is before
|
|
the first line in the display and the screen is scrolled, an
|
|
unspecified portion of the current line shall be placed on the first
|
|
line of the display. If the current line is after the last
|
|
line in the display and the screen is scrolled, an unspecified portion
|
|
of the current line shall be placed on the last line of the
|
|
display.
|
|
.LP
|
|
In visual mode, if a line from the edit buffer (other than the current
|
|
line) does not entirely fit into the lines at the bottom
|
|
of the display that are available for its presentation, the editor
|
|
may choose not to display any portion of the line. The lines of
|
|
the display that do not contain text from the edit buffer for this
|
|
reason shall each consist of a single \fB'@'\fP
|
|
character.
|
|
.LP
|
|
In visual mode, the editor may choose for unspecified reasons to not
|
|
update lines in the display to correspond to the underlying
|
|
edit buffer text. The lines of the display that do not correctly correspond
|
|
to text from the edit buffer for this reason shall
|
|
consist of a single \fB'@'\fP character (plus the terminating <newline>),
|
|
and the <control>-R command shall cause
|
|
the editor to update the screen to correctly represent the edit buffer.
|
|
.LP
|
|
Open and visual mode commands that set the current column set it to
|
|
a column position in the display, and not a character
|
|
position in the line. In this case, however, the column position in
|
|
the display shall be calculated for an infinite width display;
|
|
for example, the column related to a character that is part of a line
|
|
that has been folded onto additional screen lines will be
|
|
offset from the display line column where the buffer line begins,
|
|
not from the beginning of a particular display line.
|
|
.LP
|
|
The display cursor column in the display is based on the value of
|
|
the current column, as follows, with each rule applied in
|
|
turn:
|
|
.IP " 1." 4
|
|
If the current column is after the last display line column used by
|
|
the displayed line, the display cursor column shall be set
|
|
to the last display line column occupied by the last non- <newline>
|
|
in the current line; otherwise, the display cursor column
|
|
shall be set to the current column.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the character of which some portion is displayed in the display
|
|
line column specified by the display cursor column requires
|
|
more than a single display line column:
|
|
.RS
|
|
.IP " a." 4
|
|
If in text input mode, the display cursor column shall be adjusted
|
|
to the first display line column in which any portion of that
|
|
character is displayed.
|
|
.LP
|
|
.IP " b." 4
|
|
Otherwise, the display cursor column shall be adjusted to the last
|
|
display line column in which any portion of that character is
|
|
displayed.
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.LP
|
|
The current column shall not be changed by these adjustments to the
|
|
display cursor column.
|
|
.LP
|
|
If an error occurs during the parsing or execution of a \fIvi\fP command:
|
|
.IP " *" 3
|
|
The terminal shall be alerted. Execution of the \fIvi\fP command shall
|
|
stop, and the cursor (for example, the current line and
|
|
column) shall not be further modified.
|
|
.LP
|
|
.IP " *" 3
|
|
Unless otherwise specified by the following command sections, it is
|
|
unspecified whether an informational message shall be
|
|
displayed.
|
|
.LP
|
|
.IP " *" 3
|
|
Any partially entered \fIvi\fP command shall be discarded.
|
|
.LP
|
|
.IP " *" 3
|
|
If the \fIvi\fP command resulted from a \fBmap\fP expansion, all characters
|
|
from that \fBmap\fP expansion shall be discarded,
|
|
except as otherwise specified by the \fBmap\fP command (see \fIed\fP).
|
|
.LP
|
|
.IP " *" 3
|
|
If the \fIvi\fP command resulted from the execution of a buffer, no
|
|
further commands caused by the execution of the buffer
|
|
shall be executed.
|
|
.LP
|
|
.SS Page Backwards
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-B
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If in open mode, the <control>-B command shall behave identically
|
|
to the \fBz\fP command. Otherwise, if the current line
|
|
is the first line of the edit buffer, it shall be an error.
|
|
.LP
|
|
If the \fBwindow\fP edit option is less than 3, display a screen where
|
|
the last line of the display shall be some portion
|
|
of:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB(\fP\fIcurrent first line\fP\fB) -1
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
otherwise, display a screen where the first line of the display shall
|
|
be some portion of:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB(\fP\fIcurrent first line\fP\fB) -\fP \fIcount\fP \fBx ((window edit option) -2)
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
If this calculation would result in a line that is before the first
|
|
line of the edit buffer, the first line of the display shall
|
|
display some portion of the first line of the edit buffer.
|
|
.LP
|
|
\fICurrent line\fP: If no lines from the previous display remain on
|
|
the screen, set to the last line of the display; otherwise,
|
|
set to ( \fIline\fP - the number of new lines displayed on this screen).
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Scroll Forward
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-D
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the current line is the last line of the edit buffer, it shall
|
|
be an error.
|
|
.LP
|
|
If no \fIcount\fP is specified, \fIcount\fP shall default to the \fIcount\fP
|
|
associated with the previous <control>-D
|
|
or <control>-U command. If there was no previous <control>-D or <control>-U
|
|
command, \fIcount\fP shall default
|
|
to the value of the \fBscroll\fP edit option.
|
|
.LP
|
|
If in open mode, write lines starting with the line after the current
|
|
line, until \fIcount\fP lines or the last line of the
|
|
file have been written.
|
|
.LP
|
|
\fICurrent line\fP: If the current line + \fIcount\fP is past the
|
|
last line of the edit buffer, set to the last line of the
|
|
edit buffer; otherwise, set to the current line + \fIcount\fP.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Scroll Forward by Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-E
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Display the line count lines after the last line currently displayed.
|
|
.LP
|
|
If the last line of the edit buffer is displayed, it shall be an error.
|
|
If there is no line \fIcount\fP lines after the last
|
|
line currently displayed, the last line of the display shall display
|
|
some portion of the last line of the edit buffer.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged if the previous current character is
|
|
displayed; otherwise, set to the first line displayed.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS Page Forward
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-F
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If in open mode, the <control>-F command shall behave identically
|
|
to the \fBz\fP command. Otherwise, if the current line
|
|
is the last line of the edit buffer, it shall be an error.
|
|
.LP
|
|
If the \fBwindow\fP edit option is less than 3, display a screen where
|
|
the first line of the display shall be some portion
|
|
of:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB(\fP\fIcurrent last line\fP\fB) +1
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
otherwise, display a screen where the first line of the display shall
|
|
be some portion of:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB(\fP\fIcurrent first line\fP\fB) +\fP \fIcount\fP \fBx ((window edit option) -2)
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
If this calculation would result in a line that is after the last
|
|
line of the edit buffer, the last line of the display shall
|
|
display some portion of the last line of the edit buffer.
|
|
.LP
|
|
\fICurrent line\fP: If no lines from the previous display remain on
|
|
the screen, set to the first line of the display;
|
|
otherwise, set to ( \fIline\fP + the number of new lines displayed
|
|
on this screen).
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Display Information
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-G
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fBfile\fP command.
|
|
.SS Move Cursor Backwards
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-H
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fBh
|
|
.sp
|
|
|
|
the current\fP \fIerase\fP \fBcharacter (see stty)
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are no characters before the current character on the current
|
|
line, it shall be an error. If there are less than
|
|
\fIcount\fP previous characters on the current line, \fIcount\fP shall
|
|
be adjusted to the number of previous characters on the
|
|
line.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall be from the character before the starting cursor
|
|
up to and including the \fIcount\fPth character before
|
|
the starting cursor.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to ( \fIcolumn\fP - the number of columns
|
|
occupied by \fIcount\fP characters ending with the
|
|
previous current column).
|
|
.SS Move Down
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<newline>
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fB<control>-J
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fB<control>-M
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fB<control>-N
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fBj
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fB<carriage-return>
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fB+
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are less than \fIcount\fP lines after the current line in
|
|
the edit buffer, it shall be an error.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall include the starting line and the next \fIcount\fP
|
|
- 1 lines.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to \fIcurrent line\fP+ \fIcount\fP.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank> for the <carriage-return>,
|
|
<control>-M, and \fB+\fP commands;
|
|
otherwise, unchanged.
|
|
.SS Clear and Redisplay
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-L
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If in open mode, clear the screen and redisplay the current line.
|
|
Otherwise, clear and redisplay the screen.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS Move Up
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-P
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fBk
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fB-
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are less than \fIcount\fP lines before the current line in
|
|
the edit buffer, it shall be an error.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall include the starting line and the previous \fIcount\fP
|
|
lines.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to \fIcurrent line\fP - \fIcount\fP.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank> for the \fB-\fP command;
|
|
otherwise, unchanged.
|
|
.SS Redraw Screen
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-R
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If any lines have been deleted from the display screen and flagged
|
|
as deleted on the terminal using the \fB@\fP convention (see
|
|
the beginning of the EXTENDED DESCRIPTION section), they shall be
|
|
redisplayed to match the contents of the edit buffer.
|
|
.LP
|
|
It is unspecified whether lines flagged with \fB@\fP because they
|
|
do not fit on the terminal display shall be affected.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS Scroll Backward
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-U
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the current line is the first line of the edit buffer, it shall
|
|
be an error.
|
|
.LP
|
|
If no \fIcount\fP is specified, \fIcount\fP shall default to the \fIcount\fP
|
|
associated with the previous <control>-D
|
|
or <control>-U command. If there was no previous <control>-D or <control>-U
|
|
command, \fIcount\fP shall default
|
|
to the value of the \fBscroll\fP edit option.
|
|
.LP
|
|
\fICurrent line\fP: If \fIcount\fP is greater than the current line,
|
|
set to 1; otherwise, set to the current line -
|
|
\fIcount\fP.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Scroll Backward by Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<control>-Y
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Display the line \fIcount\fP lines before the first line currently
|
|
displayed.
|
|
.LP
|
|
If the current line is the first line of the edit buffer, it shall
|
|
be an error. If this calculation would result in a line that
|
|
is before the first line of the edit buffer, the first line of the
|
|
display shall display some portion of the first line of the edit
|
|
buffer.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged if the previous current character is
|
|
displayed; otherwise, set to the first line displayed.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS Edit the Alternate File
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-^
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
This command shall be equivalent to the \fIex\fP \fBedit\fP command,
|
|
with the alternate
|
|
pathname as its argument.
|
|
.SS Terminate Command or Input Mode
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<ESC>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If a partial \fIvi\fP command (as defined by at least one, non- \fIcount\fP
|
|
character) has been entered, discard the
|
|
\fIcount\fP and the command character(s).
|
|
.LP
|
|
Otherwise, if no command characters have been entered, and the <ESC>
|
|
was the result of a map expansion, the terminal shall
|
|
be alerted and the <ESC> character shall be discarded, but it shall
|
|
not be an error.
|
|
.LP
|
|
Otherwise, it shall be an error.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS Search for tagstring
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-]
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the current character is not a word or <blank>, it shall be an
|
|
error.
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fBtag\fP command,
|
|
with the argument to
|
|
that command defined as follows.
|
|
.LP
|
|
If the current character is a <blank>:
|
|
.IP " 1." 4
|
|
Skip all <blank>s after the cursor up to the end of the line.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the end of the line is reached, it shall be an error.
|
|
.LP
|
|
.LP
|
|
Then, the argument to the \fIex\fP \fBtag\fP command shall be the
|
|
current character and all
|
|
subsequent characters, up to the first non-word character or the end
|
|
of the line.
|
|
.SS Move Cursor Forward
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<space>
|
|
.sp
|
|
|
|
\fP\fB[\fP\fIcount\fP\fB]\fP \fBl\fP (ell)
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are less than \fIcount\fP non- <newline>s after the cursor
|
|
on the current line, \fIcount\fP shall be adjusted
|
|
to the number of non- <newline>s after the cursor on the line.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the current or \fIcount\fPth character after the cursor is the
|
|
last non- <newline> in the line, the text region shall
|
|
be comprised of the current character up to and including the last
|
|
non- <newline> in the line. Otherwise, the text region
|
|
shall be from the current character up to, but not including, the
|
|
\fIcount\fPth character after the cursor.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
If there are no non- <newline>s after the current character on the
|
|
current line, it shall be an error.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column that displays any portion
|
|
of the \fIcount\fPth character after the current
|
|
character.
|
|
.SS Replace Text with Results from Shell Command
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB!\fP \fImotion shell-commands\fP \fB<newline>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the motion command is the \fB!\fP command repeated:
|
|
.IP " 1." 4
|
|
If the edit buffer is empty and no \fIcount\fP was supplied, the command
|
|
shall be the equivalent of the \fIex\fP \fB:read\fP \fB!\fP command,
|
|
with the text input, and no text shall be copied to any
|
|
buffer.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise:
|
|
.RS
|
|
.IP " a." 4
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
.IP " b." 4
|
|
The text region shall be from the current line up to and including
|
|
the next \fIcount\fP -1 lines.
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.LP
|
|
Otherwise, the text region shall be the lines in which any character
|
|
of the text region specified by the motion command
|
|
appear.
|
|
.LP
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fB!\fP command for
|
|
the specified
|
|
lines.
|
|
.SS Move Cursor to End-of-Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB$
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if there are less than ( \fIcount\fP -1) lines
|
|
after the current line in the edit buffer.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If \fIcount\fP is 1:
|
|
.RS
|
|
.IP " a." 4
|
|
It shall be an error if the line is empty.
|
|
.LP
|
|
.IP " b." 4
|
|
Otherwise, the text region shall consist of all characters from the
|
|
starting cursor to the last non- <newline> in the
|
|
line, inclusive, and any text copied to a buffer shall be in character
|
|
mode.
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, if the starting cursor position is at or before the first
|
|
non- <blank> in the line, the text region shall
|
|
consist of the current and the next \fIcount\fP -1 lines, and any
|
|
text saved to a buffer shall be in line mode.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, the text region shall consist of all characters from the
|
|
starting cursor to the last non- <newline> in the line
|
|
that is \fIcount\fP -1 lines forward from the current line, and any
|
|
text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the \fIcurrent line\fP + \fIcount\fP-1.
|
|
.LP
|
|
\fICurrent column\fP: The current column is set to the last display
|
|
line column of the last non- <newline> in the line,
|
|
or column position 1 if the line is empty.
|
|
.LP
|
|
The current column shall be adjusted to be on the last display line
|
|
column of the last non- <newline> of the current line
|
|
as subsequent commands change the current line, until a command changes
|
|
the current column.
|
|
.SS Move to Matching Character
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB%
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the character at the current position is not a parenthesis, bracket,
|
|
or curly brace, search forward in the line to the first
|
|
one of those characters. If no such character is found, it shall be
|
|
an error.
|
|
.LP
|
|
The matching character shall be the parenthesis, bracket, or curly
|
|
brace matching the parenthesis, bracket, or curly brace,
|
|
respectively, that was at the current position or that was found on
|
|
the current line.
|
|
.LP
|
|
Matching shall be determined as follows, for an open parenthesis:
|
|
.IP " 1." 4
|
|
Set a counter to 1.
|
|
.LP
|
|
.IP " 2." 4
|
|
Search forwards until a parenthesis is found or the end of the edit
|
|
buffer is reached.
|
|
.LP
|
|
.IP " 3." 4
|
|
If the end of the edit buffer is reached, it shall be an error.
|
|
.LP
|
|
.IP " 4." 4
|
|
If an open parenthesis is found, increment the counter by 1.
|
|
.LP
|
|
.IP " 5." 4
|
|
If a close parenthesis is found, decrement the counter by 1.
|
|
.LP
|
|
.IP " 6." 4
|
|
If the counter is zero, the current character is the matching character.
|
|
.LP
|
|
.LP
|
|
Matching for a close parenthesis shall be equivalent, except that
|
|
the search shall be backwards, from the starting character to
|
|
the beginning of the buffer, a close parenthesis shall increment the
|
|
counter by 1, and an open parenthesis shall decrement the
|
|
counter by 1.
|
|
.LP
|
|
Matching for brackets and curly braces shall be equivalent, except
|
|
that searching shall be done for open and close brackets or
|
|
open and close curly braces. It is implementation-defined whether
|
|
other characters are searched for and matched as well.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the matching cursor was after the starting cursor in the edit buffer,
|
|
and the starting cursor position was at or before the
|
|
first non- <blank> non- <newline> in the starting line, and the matching
|
|
cursor position was at or after the last non-
|
|
<blank> non- <newline> in the matching line, the text region shall
|
|
consist of the current line to the matching line,
|
|
inclusive, and any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the matching cursor was before the starting cursor in the edit
|
|
buffer, and the starting cursor position was at or after the
|
|
last non- <blank> non- <newline> in the starting line, and the matching
|
|
cursor position was at or before the first non-
|
|
<blank> non- <newline> in the matching line, the text region shall
|
|
consist of the current line to the matching line,
|
|
inclusive, and any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, the text region shall consist of the starting character
|
|
to the matching character, inclusive, and any text copied to
|
|
a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line where the matching character is
|
|
located.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column where any portion of
|
|
the matching character is displayed.
|
|
.SS Repeat Substitution
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB&
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Repeat the previous substitution command. This command shall be equivalent
|
|
to the \fIex\fP
|
|
\fB&\fP command with the current line as its addresses, and without
|
|
\fIoptions\fP, \fIcount\fP, or \fIflags\fP.
|
|
.SS Return to Previous Context at Beginning of Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB'\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if there is no line in the edit buffer marked
|
|
by \fIcharacter\fP.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the starting cursor is after the marked cursor, then the locations
|
|
of the starting cursor and the marked cursor in the edit
|
|
buffer shall be logically swapped.
|
|
.LP
|
|
.IP " 2." 4
|
|
The text region shall consist of the starting line up to and including
|
|
the marked line, and any text copied to a buffer shall be
|
|
in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line referenced by the mark.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Return to Previous Context
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB`\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if the marked line is no longer in the edit buffer.
|
|
If the marked line no longer contains a character in
|
|
the saved numbered character position, it shall be as if the marked
|
|
position is the first non- <blank>.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
It shall be an error if the marked cursor references the same character
|
|
in the edit buffer as the starting cursor.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the starting cursor is after the marked cursor, then the locations
|
|
of the starting cursor and the marked cursor in the edit
|
|
buffer shall be logically swapped.
|
|
.LP
|
|
.IP " 3." 4
|
|
If the starting line is empty or the starting cursor is at or before
|
|
the first non- <blank> non- <newline> of the
|
|
starting line, and the marked cursor line is empty or the marked cursor
|
|
references the first character of the marked cursor line,
|
|
the text region shall consist of all lines containing characters from
|
|
the starting cursor to the line before the marked cursor
|
|
line, inclusive, and any text copied to a buffer shall be in line
|
|
mode.
|
|
.LP
|
|
.IP " 4." 4
|
|
Otherwise, if the marked cursor line is empty or the marked cursor
|
|
references a character at or before the first non-
|
|
<blank> non- <newline> of the marked cursor line, the region of text
|
|
shall be from the starting cursor to the last non-
|
|
<newline> of the line before the marked cursor line, inclusive, and
|
|
any text copied to a buffer shall be in character
|
|
mode.
|
|
.LP
|
|
.IP " 5." 4
|
|
Otherwise, the region of text shall be from the starting cursor (inclusive),
|
|
to the marked cursor (exclusive), and any text
|
|
copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line referenced by the mark.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the character referenced by the mark is displayed.
|
|
.SS Return to Previous Section
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB[[
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move the cursor backward through the edit buffer to the first character
|
|
of the previous section boundary, \fIcount\fP
|
|
times.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the starting cursor was at the first character of the starting
|
|
line or the starting line was empty, and the first character
|
|
of the boundary was the first character of the boundary line, the
|
|
text region shall consist of the current line up to and including
|
|
the line where the \fIcount\fPth next boundary starts, and any text
|
|
copied to a buffer shall be in line mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the boundary was the last line of the edit buffer or the last non-
|
|
<newline> of the last line of the edit buffer, the
|
|
text region shall consist of the last character in the edit buffer
|
|
up to and including the starting character, and any text saved
|
|
to a buffer shall be in character mode.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, the text region shall consist of the starting character
|
|
up to but not including the first character in the
|
|
\fIcount\fPth next boundary, and any text copied to a buffer shall
|
|
be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line where the \fIcount\fPth next boundary
|
|
in the edit buffer starts.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the first character of the \fIcount\fPth next boundary is
|
|
displayed, or column position 1 if the line is empty.
|
|
.SS Move to Next Section
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB]]
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move the cursor forward through the edit buffer to the first character
|
|
of the next section boundary, \fIcount\fP times.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the starting cursor was at the first character of the starting
|
|
line or the starting line was empty, and the first character
|
|
of the boundary was the first character of the boundary line, the
|
|
text region shall consist of the current line up to and including
|
|
the line where the \fIcount\fPth previous boundary starts, and any
|
|
text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the boundary was the first line of the edit buffer, the text region
|
|
shall consist of the first character in the edit buffer
|
|
up to but not including the starting character, and any text copied
|
|
to a buffer shall be in character mode.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, the text region shall consist of the first character in
|
|
the \fIcount\fPth previous section boundary up to but not
|
|
including the starting character, and any text copied to a buffer
|
|
shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line where the \fIcount\fPth previous
|
|
boundary in the edit buffer starts.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the first character of the \fIcount\fPth previous
|
|
boundary is displayed, or column position 1 if the line is empty.
|
|
.SS Move to First Non-<blank> Position on Current Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB^
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the line has no non- <blank> non- <newline>s, or if the cursor
|
|
is at the first non- <blank> non-
|
|
<newline> of the line, it shall be an error.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the cursor is before the first non- <blank> non- <newline> of the
|
|
line, the text region shall be comprised of the
|
|
current character, up to, but not including, the first non- <blank>
|
|
non- <newline> of the line.
|
|
.LP
|
|
.IP " 3." 4
|
|
If the cursor is after the first non- <blank> non- <newline> of the
|
|
line, the text region shall be from the
|
|
character before the starting cursor up to and including the first
|
|
non- <blank> non- <newline> of the line.
|
|
.LP
|
|
.IP " 4." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Current and Line Above
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB_
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If \fIcount\fP is less than 2, the text region shall be the current
|
|
line.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, the text region shall include the starting line and the
|
|
next \fIcount\fP -1 lines.
|
|
.LP
|
|
.IP " 3." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to current line + \fIcount\fP -1.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Move Back to Beginning of Sentence
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB(
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move backward to the beginning of a sentence. This command shall be
|
|
equivalent to the \fB[[\fP command, with the exception that
|
|
sentence boundaries shall be used instead of section boundaries.
|
|
.SS Move Forward to Beginning of Sentence
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB)
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move forward to the beginning of a sentence. This command shall be
|
|
equivalent to the \fB]]\fP command, with the exception that
|
|
sentence boundaries shall be used instead of section boundaries.
|
|
.SS Move Back to Preceding Paragraph
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB{
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move back to the beginning of the preceding paragraph. This command
|
|
shall be equivalent to the \fB[[\fP command, with the
|
|
exception that paragraph boundaries shall be used instead of section
|
|
boundaries.
|
|
.SS Move Forward to Next Paragraph
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB}
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move forward to the beginning of the next paragraph. This command
|
|
shall be equivalent to the \fB]]\fP command, with the
|
|
exception that paragraph boundaries shall be used instead of section
|
|
boundaries.
|
|
.SS Move to Specific Column Position
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB|
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
For the purposes of this command, lines that are too long for the
|
|
current display and that have been folded shall be treated as
|
|
having a single, 1-based, number of columns.
|
|
.LP
|
|
If there are less than \fIcount\fP columns in which characters from
|
|
the current line are displayed on the screen, \fIcount\fP
|
|
shall be adjusted to be the last column in which any portion of the
|
|
line is displayed on the screen.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the line is empty, or the cursor character is the same as the character
|
|
on the \fIcount\fPth column of the line, it shall be
|
|
an error.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the cursor is before the \fIcount\fPth column of the line, the
|
|
text region shall be comprised of the current character, up
|
|
to but not including the character on the \fIcount\fPth column of
|
|
the line.
|
|
.LP
|
|
.IP " 3." 4
|
|
If the cursor is after the \fIcount\fPth column of the line, the text
|
|
region shall be from the character before the starting
|
|
cursor up to and including the character on the \fIcount\fPth column
|
|
of the line.
|
|
.LP
|
|
.IP " 4." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the character that is displayed in the \fIcount\fP column
|
|
of the line is displayed.
|
|
.SS Reverse Find Character
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB,
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the last \fBF\fP, \fBf\fP, \fBT\fP, or \fBt\fP command was \fBF\fP,
|
|
\fBf\fP, \fBT\fP, or \fBt\fP, this command shall
|
|
be equivalent to an \fBf\fP, \fBF\fP, \fBt\fP, or \fBT\fP command,
|
|
respectively, with the specified \fIcount\fP and the same
|
|
search character.
|
|
.LP
|
|
If there was no previous \fBF\fP, \fBf\fP, \fBT\fP, or \fBt\fP command,
|
|
it shall be an error.
|
|
.SS Repeat
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB.
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Repeat the last \fB!\fP, \fB<\fP, \fB>\fP, \fBA\fP, \fBC\fP, \fBD\fP,
|
|
\fBI\fP, \fBJ\fP, \fBO\fP, \fBP\fP,
|
|
\fBR\fP, \fBS\fP, \fBX\fP, \fBY\fP, \fBa\fP, \fBc\fP, \fBd\fP, \fBi\fP,
|
|
\fBo\fP, \fBp\fP, \fBr\fP, \fBs\fP, \fBx\fP,
|
|
\fBy\fP, or \fB~\fP command. It shall be an error if none of these
|
|
commands have been executed. Commands (other than
|
|
commands that enter text input mode) executed as a result of map expansions,
|
|
shall not change the value of the last repeatable
|
|
command.
|
|
.LP
|
|
Repeated commands with associated motion commands shall repeat the
|
|
motion command as well; however, any specified \fIcount\fP
|
|
shall replace the \fIcount\fP(s) that were originally specified to
|
|
the repeated command or its associated motion command.
|
|
.LP
|
|
If the motion component of the repeated command is \fBf\fP, \fBF\fP,
|
|
\fBt\fP, or \fBT\fP, the repeated command shall not set
|
|
the remembered search character for the \fB;\fP and \fB,\fP commands.
|
|
.LP
|
|
If the repeated command is \fBp\fP or \fBP\fP, and the buffer associated
|
|
with that command was a numeric buffer named with a
|
|
number less than 9, the buffer associated with the repeated command
|
|
shall be set to be the buffer named by the name of the previous
|
|
buffer logically incremented by 1.
|
|
.LP
|
|
If the repeated character is a text input command, the input text
|
|
associated with that command is repeated literally:
|
|
.IP " *" 3
|
|
Input characters are neither macro or abbreviation-expanded.
|
|
.LP
|
|
.IP " *" 3
|
|
Input characters are not interpreted in any special way with the exception
|
|
that <newline>, <carriage-return>, and
|
|
<control>-T behave as described in Input Mode Commands in vi .
|
|
.LP
|
|
.LP
|
|
\fICurrent line\fP: Set as described for the repeated command.
|
|
.LP
|
|
\fICurrent column\fP: Set as described for the repeated command.
|
|
.SS Find Regular Expression
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB/
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the input line contains no non- <newline>s, it shall be equivalent
|
|
to a line containing only the last regular
|
|
expression encountered. The enhanced regular expressions supported
|
|
by \fIvi\fP are described in \fIRegular Expressions in ex\fP .
|
|
.LP
|
|
Otherwise, the line shall be interpreted as one or more regular expressions,
|
|
optionally followed by an address offset or a
|
|
\fIvi\fP \fBz\fP command.
|
|
.LP
|
|
If the regular expression is not the last regular expression on the
|
|
line, or if a line offset or \fBz\fP command is specified,
|
|
the regular expression shall be terminated by an unescaped \fB'/'\fP
|
|
character, which shall not be used as part of the regular
|
|
expression. If the regular expression is not the first regular expression
|
|
on the line, it shall be preceded by zero or more
|
|
<blank>s, a semicolon, zero or more <blank>s, and a leading \fB'/'\fP
|
|
character, which shall not be interpreted as
|
|
part of the regular expression. It shall be an error to precede any
|
|
regular expression with any characters other than these.
|
|
.LP
|
|
Each search shall begin from the character after the first character
|
|
of the last match (or, if it is the first search, after the
|
|
cursor). If the \fBwrapscan\fP edit option is set, the search shall
|
|
continue to the character before the starting cursor
|
|
character; otherwise, to the end of the edit buffer. It shall be an
|
|
error if any search fails to find a match, and an informational
|
|
message to this effect shall be displayed.
|
|
.LP
|
|
An optional address offset (see \fIAddressing in ex\fP ) can be specified
|
|
after the last
|
|
regular expression by including a trailing \fB'/'\fP character after
|
|
the regular expression and specifying the address offset.
|
|
This offset will be from the line containing the match for the last
|
|
regular expression specified. It shall be an error if the line
|
|
offset would indicate a line address less than 1 or greater than the
|
|
last line in the edit buffer. An address offset of zero shall
|
|
be supported. It shall be an error to follow the address offset with
|
|
any other characters than <blank>s.
|
|
.LP
|
|
If not used as a motion command, an optional \fBz\fP command (see
|
|
Redraw Window ) can be
|
|
specified after the last regular expression by including a trailing
|
|
\fB'/'\fP character after the regular expression, zero or
|
|
more <blank>s, a \fB'z'\fP , zero or more <blank>s, an optional new
|
|
\fBwindow\fP edit option value, zero or more
|
|
<blank>s, and a location character. The effect shall be as if the
|
|
\fBz\fP command was executed after the \fB/\fP command.
|
|
It shall be an error to follow the \fBz\fP command with any other
|
|
characters than <blank>s.
|
|
.LP
|
|
The remembered search direction shall be set to forward.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
It shall be an error if the last match references the same character
|
|
in the edit buffer as the starting cursor.
|
|
.LP
|
|
.IP " 2." 4
|
|
If any address offset is specified, the last match shall be adjusted
|
|
by the specified offset as described previously.
|
|
.LP
|
|
.IP " 3." 4
|
|
If the starting cursor is after the last match, then the locations
|
|
of the starting cursor and the last match in the edit buffer
|
|
shall be logically swapped.
|
|
.LP
|
|
.IP " 4." 4
|
|
If any address offset is specified, the text region shall consist
|
|
of all lines containing characters from the starting cursor to
|
|
the last match line, inclusive, and any text copied to a buffer shall
|
|
be in line mode.
|
|
.LP
|
|
.IP " 5." 4
|
|
Otherwise, if the starting line is empty or the starting cursor is
|
|
at or before the first non- <blank> non-
|
|
<newline> of the starting line, and the last match line is empty or
|
|
the last match starts at the first character of the last
|
|
match line, the text region shall consist of all lines containing
|
|
characters from the starting cursor to the line before the last
|
|
match line, inclusive, and any text copied to a buffer shall be in
|
|
line mode.
|
|
.LP
|
|
.IP " 6." 4
|
|
Otherwise, if the last match line is empty or the last match begins
|
|
at a character at or before the first non- <blank>
|
|
non- <newline> of the last match line, the region of text shall be
|
|
from the current cursor to the last non- <newline>
|
|
of the line before the last match line, inclusive, and any text copied
|
|
to a buffer shall be in character mode.
|
|
.LP
|
|
.IP " 7." 4
|
|
Otherwise, the region of text shall be from the current cursor (inclusive),
|
|
to the first character of the last match
|
|
(exclusive), and any text copied to a buffer shall be in character
|
|
mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: If a match is found, set to the last matched line
|
|
plus the address offset, if any; otherwise,
|
|
unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column on which any portion
|
|
of the first character in the last matched string is
|
|
displayed, if a match is found; otherwise, unchanged.
|
|
.SS Move to First Character in Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB0 \fP (zero)
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Move to the first character on the current line. The character \fB'0'\fP
|
|
shall not be interpreted as a command if it is
|
|
immediately preceded by a digit.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the cursor character is the first character in the line, it shall
|
|
be an error.
|
|
.LP
|
|
.IP " 2." 4
|
|
The text region shall be from the character before the cursor character
|
|
up to and including the first character in the line.
|
|
.LP
|
|
.IP " 3." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: The last column in which any portion of the
|
|
first character in the line is displayed, or if the line is
|
|
empty, unchanged.
|
|
.SS Execute an ex Command
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB:
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Execute one or more \fIex\fP commands.
|
|
.LP
|
|
If any portion of the screen other than the last line of the screen
|
|
was overwritten by any \fIex\fP command (except \fBshell\fP), \fIvi\fP
|
|
shall display a message indicating that it is waiting
|
|
for an input from the user, and shall then read a character. This
|
|
action may also be taken for other, unspecified reasons.
|
|
.LP
|
|
If the next character entered is a \fB':'\fP , another \fIex\fP command
|
|
shall be accepted
|
|
and executed. Any other character shall cause the screen to be refreshed
|
|
and \fIvi\fP shall return to command mode.
|
|
.LP
|
|
\fICurrent line\fP: As specified for the \fIex\fP command.
|
|
.LP
|
|
\fICurrent column\fP: As specified for the \fIex\fP command.
|
|
.SS Repeat Find
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB;
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the last \fBF\fP, \fBf\fP, \fBT\fP,
|
|
or \fBt\fP command, with the specified \fIcount\fP,
|
|
and with the same search character used for the last \fBF\fP, \fBf\fP,
|
|
\fBT\fP, or \fBt\fP command. If there was no previous
|
|
\fBF\fP, \fBf\fP, \fBT\fP, or \fBt\fP command, it shall be an error.
|
|
.SS Shift Left
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB<\fP \fImotion\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the motion command is the \fB<\fP command repeated:
|
|
.IP " 1." 4
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
.IP " 2." 4
|
|
The text region shall be from the current line, up to and including
|
|
the next \fIcount\fP -1 lines.
|
|
.LP
|
|
.LP
|
|
Shift any line in the text region specified by the \fIcount\fP and
|
|
motion command one shiftwidth (see the \fIex\fP \fBshiftwidth\fP option)
|
|
toward the start of the line, as described by the \fIex\fP \fB<\fP
|
|
command. The unshifted lines shall be copied to the unnamed buffer
|
|
in line
|
|
mode.
|
|
.LP
|
|
\fICurrent line\fP: If the motion was from the current cursor position
|
|
toward the end of the edit buffer, unchanged. Otherwise,
|
|
set to the first line in the edit buffer that is part of the text
|
|
region specified by the motion command.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Shift Right
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB>\fP \fImotion\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the motion command is the \fB>\fP command repeated:
|
|
.IP " 1." 4
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
.IP " 2." 4
|
|
The text region shall be from the current line, up to and including
|
|
the next \fIcount\fP -1 lines.
|
|
.LP
|
|
.LP
|
|
Shift any line with characters in the text region specified by the
|
|
\fIcount\fP and motion command one shiftwidth (see the \fIex\fP \fBshiftwidth\fP
|
|
option) away from the start of the line, as described by the \fIex\fP
|
|
\fB>\fP command. The unshifted lines shall be copied into the unnamed
|
|
buffer in line
|
|
mode.
|
|
.LP
|
|
\fICurrent line\fP: If the motion was from the current cursor position
|
|
toward the end of the edit buffer, unchanged. Otherwise,
|
|
set to the first line in the edit buffer that is part of the text
|
|
region specified by the motion command.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Scan Backwards for Regular Expression
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB?
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Scan backwards; the \fB?\fP command shall be equivalent to the \fB/\fP
|
|
command (see Find Regular
|
|
Expression ) with the following exceptions:
|
|
.IP " 1." 4
|
|
The input prompt shall be a \fB'?'\fP .
|
|
.LP
|
|
.IP " 2." 4
|
|
Each search shall begin from the character before the first character
|
|
of the last match (or, if it is the first search, the
|
|
character before the cursor character).
|
|
.LP
|
|
.IP " 3." 4
|
|
The search direction shall be from the cursor toward the beginning
|
|
of the edit buffer, and the \fBwrapscan\fP edit option shall
|
|
affect whether the search wraps to the end of the edit buffer and
|
|
continues.
|
|
.LP
|
|
.IP " 4." 4
|
|
The remembered search direction shall be set to backward.
|
|
.LP
|
|
.SS Execute
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB@\fP\fIbuffer\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the \fIbuffer\fP is specified as \fB@\fP, the last buffer executed
|
|
shall be used. If no previous buffer has been executed,
|
|
it shall be an error.
|
|
.LP
|
|
Behave as if the contents of the named buffer were entered as standard
|
|
input. After each line of a line-mode buffer, and all but
|
|
the last line of a character mode buffer, behave as if a <newline>
|
|
were entered as standard input.
|
|
.LP
|
|
If an error occurs during this process, an error message shall be
|
|
written, and no more characters resulting from the execution
|
|
of this command shall be processed.
|
|
.LP
|
|
If a \fIcount\fP is specified, behave as if that count were entered
|
|
as user input before the characters from the \fB@\fP
|
|
buffer were entered.
|
|
.LP
|
|
\fICurrent line\fP: As specified for the individual commands.
|
|
.LP
|
|
\fICurrent column\fP: As specified for the individual commands.
|
|
.SS Reverse Case
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fB~
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Reverse the case of the current character and the next \fIcount\fP
|
|
-1 characters, such that lowercase characters that have
|
|
uppercase counterparts shall be changed to uppercase characters, and
|
|
uppercase characters that have lowercase counterparts shall be
|
|
changed to lowercase characters, as prescribed by the current locale.
|
|
No other characters shall be affected by this command.
|
|
.LP
|
|
If there are less than \fIcount\fP -1 characters after the cursor
|
|
in the edit buffer, \fIcount\fP shall be adjusted to the
|
|
number of characters after the cursor in the edit buffer minus 1.
|
|
.LP
|
|
For the purposes of this command, the next character after the last
|
|
non- <newline> on the line shall be the next character
|
|
in the edit buffer.
|
|
.LP
|
|
\fICurrent line\fP: Set to the line including the ( \fIcount\fP-1)th
|
|
character after the cursor.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the ( \fIcount\fP-1)th character after the cursor is
|
|
displayed.
|
|
.SS Append
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBa
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Enter text input mode after the current cursor position. No characters
|
|
already in the edit buffer shall be affected by this
|
|
command. A \fIcount\fP shall cause the input text to be appended \fIcount\fP
|
|
-1 more times to the end of the input.
|
|
.LP
|
|
\fICurrent line/column\fP: As specified for the text input commands
|
|
(see Input Mode Commands in
|
|
vi ).
|
|
.SS Append at End-of-Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBA
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIvi\fP command:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB$\fP \fB[\fP \fIcount\fP \fB]\fP \fBa
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
(see Append ).
|
|
.SS Move Backward to Preceding Word
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBb
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
With the exception that words are used as the delimiter instead of
|
|
bigwords, this command shall be equivalent to the \fBB\fP
|
|
command.
|
|
.SS Move Backward to Preceding Bigword
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBB
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the edit buffer is empty or the cursor is on the first character
|
|
of the edit buffer, it shall be an error. If less than
|
|
\fIcount\fP bigwords begin between the cursor and the start of the
|
|
edit buffer, \fIcount\fP shall be adjusted to the number of
|
|
bigword beginnings between the cursor and the start of the edit buffer.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall be from the first character of the \fIcount\fPth
|
|
previous bigword beginning up to but not including the
|
|
cursor character.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line containing the \fIcurrent column\fP.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column upon which any part of
|
|
the first character of the \fIcount\fPth previous bigword
|
|
is displayed.
|
|
.SS Change
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBc\fP \fImotion\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the motion command is the \fBc\fP command repeated:
|
|
.IP " 1." 4
|
|
The buffer text shall be in line mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
.IP " 3." 4
|
|
The text region shall be from the current line up to and including
|
|
the next \fIcount\fP -1 lines.
|
|
.LP
|
|
.LP
|
|
Otherwise, the buffer text mode and text region shall be as specified
|
|
by the motion command.
|
|
.LP
|
|
The replaced text shall be copied into \fIbuffer\fP, if specified,
|
|
and into the unnamed buffer. If the text to be replaced
|
|
contains characters from more than a single line, or the buffer text
|
|
is in line mode, the replaced text shall be copied into the
|
|
numeric buffers as well.
|
|
.LP
|
|
If the buffer text is in line mode:
|
|
.IP " 1." 4
|
|
Any lines that contain characters in the region shall be deleted,
|
|
and the editor shall enter text input mode at the beginning of
|
|
a new line which shall replace the first line deleted.
|
|
.LP
|
|
.IP " 2." 4
|
|
If the \fBautoindent\fP edit option is set, \fBautoindent\fP characters
|
|
equal to the \fBautoindent\fP characters on the first
|
|
line deleted shall be inserted as if entered by the user.
|
|
.LP
|
|
.LP
|
|
Otherwise, if characters from more than one line are in the region
|
|
of text:
|
|
.IP " 1." 4
|
|
The text shall be deleted.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text remaining in the last line in the text region shall be appended
|
|
to the first line in the region, and the last line in
|
|
the region shall be deleted.
|
|
.LP
|
|
.IP " 3." 4
|
|
The editor shall enter text input mode after the last character not
|
|
deleted from the first line in the text region, if any;
|
|
otherwise, on the first column of the first line in the region.
|
|
.LP
|
|
.LP
|
|
Otherwise:
|
|
.IP " 1." 4
|
|
If the glyph for \fB'$'\fP is smaller than the region, the end of
|
|
the region shall be marked with a \fB'$'\fP .
|
|
.LP
|
|
.IP " 2." 4
|
|
The editor shall enter text input mode, overwriting the region of
|
|
text.
|
|
.LP
|
|
.LP
|
|
\fICurrent line/column\fP: As specified for the text input commands
|
|
(see Input Mode Commands in
|
|
vi ).
|
|
.SS Change to End-of-Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBC
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIvi\fP command:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBc$
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
See the \fBc\fP command.
|
|
.SS Delete
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBd\fP \fImotion\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the motion command is the \fBd\fP command repeated:
|
|
.IP " 1." 4
|
|
The buffer text shall be in line mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
.IP " 3." 4
|
|
The text region shall be from the current line up to and including
|
|
the next \fIcount\fP -1 lines.
|
|
.LP
|
|
.LP
|
|
Otherwise, the buffer text mode and text region shall be as specified
|
|
by the motion command.
|
|
.LP
|
|
If in open mode, and the current line is deleted, and the line remains
|
|
on the display, an \fB'@'\fP character shall be
|
|
displayed as the first glyph of that line.
|
|
.LP
|
|
Delete the region of text into \fIbuffer\fP, if specified, and into
|
|
the unnamed buffer. If the text to be deleted contains
|
|
characters from more than a single line, or the buffer text is in
|
|
line mode, the deleted text shall be copied into the numeric
|
|
buffers, as well.
|
|
.LP
|
|
\fICurrent line\fP: Set to the first text region line that appears
|
|
in the edit buffer, unless that line has been deleted, in
|
|
which case it shall be set to the last line in the edit buffer, or
|
|
line 1 if the edit buffer is empty.
|
|
.LP
|
|
\fICurrent column\fP:
|
|
.IP " 1." 4
|
|
If the line is empty, set to column position 1.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, if the buffer text is in line mode or the motion was from
|
|
the cursor toward the end of the edit buffer:
|
|
.RS
|
|
.IP " a." 4
|
|
If a character from the current line is displayed in the current column,
|
|
set to the last column that displays any portion of
|
|
that character.
|
|
.LP
|
|
.IP " b." 4
|
|
Otherwise, set to the last column in which any portion of any character
|
|
in the line is displayed.
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, if a character is displayed in the column that began the
|
|
text region, set to the last column that displays any
|
|
portion of that character.
|
|
.LP
|
|
.IP " 4." 4
|
|
Otherwise, set to the last column in which any portion of any character
|
|
in the line is displayed.
|
|
.LP
|
|
.SS Delete to End-of-Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB]\fP \fBD
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Delete the text from the current position to the end of the current
|
|
line; equivalent to the \fIvi\fP command:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB]\fP \fBd$
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.SS Move to End-of-Word
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBe
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
With the exception that words are used instead of bigwords as the
|
|
delimiter, this command shall be equivalent to the \fBE\fP
|
|
command.
|
|
.SS Move to End-of-Bigword
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBE
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the edit buffer is empty it shall be an error. If less than \fIcount\fP
|
|
bigwords end between the cursor and the end of the
|
|
edit buffer, \fIcount\fP shall be adjusted to the number of bigword
|
|
endings between the cursor and the end of the edit buffer.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall be from the last character of the \fIcount\fPth
|
|
next bigword up to and including the cursor
|
|
character.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to the line containing the current column.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column upon which any part of
|
|
the last character of the \fIcount\fPth next bigword is
|
|
displayed.
|
|
.SS Find Character in Current Line (Forward)
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBf\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if \fIcount\fP occurrences of the character do
|
|
not occur after the cursor in the line.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text range shall be from the cursor character up to and including
|
|
the \fIcount\fPth occurrence of the specified character
|
|
after the cursor.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the \fIcount\fPth occurrence of the specified character
|
|
after the cursor appears in the line.
|
|
.SS Find Character in Current Line (Reverse)
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBF\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if \fIcount\fP occurrences of the character do
|
|
not occur before the cursor in the line.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall be from the \fIcount\fPth occurrence of the
|
|
specified character before the cursor, up to, but not
|
|
including the cursor character.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the \fIcount\fPth occurrence of the specified character
|
|
before the cursor appears in the line.
|
|
.SS Move to Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBG
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If \fIcount\fP is not specified, it shall default to the last line
|
|
of the edit buffer. If \fIcount\fP is greater than the last
|
|
line of the edit buffer, it shall be an error.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall be from the cursor line up to and including
|
|
the specified line.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Set to \fIcount\fP if \fIcount\fP is specified;
|
|
otherwise, the last line.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Move to Top of Screen
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBH
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the beginning of the line \fIcount\fP greater than the first line
|
|
of which any portion appears on the display does not
|
|
exist, it shall be an error.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If in open mode, the text region shall be the current line.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, the text region shall be from the starting line up to and
|
|
including (the first line of the display + \fIcount\fP
|
|
-1).
|
|
.LP
|
|
.IP " 3." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
If in open mode, this command shall set the current column to non-
|
|
<blank> and do nothing else.
|
|
.LP
|
|
Otherwise, it shall set the current line and current column as follows.
|
|
.LP
|
|
\fICurrent line\fP: Set to (the first line of the display + \fIcount\fP
|
|
-1).
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Insert Before Cursor
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBi
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Enter text input mode before the current cursor position. No characters
|
|
already in the edit buffer shall be affected by this
|
|
command. A \fIcount\fP shall cause the input text to be appended \fIcount\fP
|
|
-1 more times to the end of the input.
|
|
.LP
|
|
\fICurrent line/column\fP: As specified for the text input commands
|
|
(see Input Mode Commands in
|
|
vi ).
|
|
.SS Insert at Beginning of Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBI
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIvi\fP command ^[ \fIcount\fP]
|
|
\fBi\fP.
|
|
.SS Join
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBJ
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the current line is the last line in the edit buffer, it shall
|
|
be an error.
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fBjoin\fP command
|
|
with no addresses, and
|
|
an \fIex\fP command \fIcount\fP value of 1 if \fIcount\fP was not
|
|
specified or if a
|
|
\fIcount\fP of 1 was specified, and an \fIex\fP command \fIcount\fP
|
|
value of \fIcount\fP -1
|
|
for any other value of \fIcount\fP, except that the current line and
|
|
column shall be set as follows.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: The last column in which any portion of the
|
|
character following the last character in the initial line is
|
|
displayed, or the last non- <newline> in the line if no characters
|
|
were appended.
|
|
.SS Move to Bottom of Screen
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBL
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the beginning of the line \fIcount\fP less than the last line of
|
|
which any portion appears on the display does not exist, it
|
|
shall be an error.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If in open mode, the text region shall be the current line.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, the text region shall include all lines from the starting
|
|
cursor line to (the last line of the display -(
|
|
\fIcount\fP -1)).
|
|
.LP
|
|
.IP " 3." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.IP " 1." 4
|
|
If in open mode, this command shall set the current column to non-
|
|
<blank> and do nothing else.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, it shall set the current line and current column as follows.
|
|
.LP
|
|
.LP
|
|
\fICurrent line\fP: Set to (the last line of the display -( \fIcount\fP
|
|
-1)).
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Mark Position
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBm\fP \fIletter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fBmark\fP command
|
|
with the specified
|
|
character as an argument.
|
|
.SS Move to Middle of Screen
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBM
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
The middle line of the display shall be calculated as follows:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB(the top line of the display) + (((number of lines displayed) +1) /2) -1
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If in open mode, the text region shall be the current line.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, the text region shall include all lines from the starting
|
|
cursor line up to and including the middle line of the
|
|
display.
|
|
.LP
|
|
.IP " 3." 4
|
|
Any text copied to a buffer shall be in line mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
If in open mode, this command shall set the current column to non-
|
|
<blank> and do nothing else.
|
|
.LP
|
|
Otherwise, it shall set the current line and current column as follows.
|
|
.LP
|
|
\fICurrent line\fP: Set to the middle line of the display.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Repeat Regular Expression Find (Forward)
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBn
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the remembered search direction was forward, the \fBn\fP command
|
|
shall be equivalent to the \fIvi\fP \fB/\fP command with
|
|
no characters entered by the user. Otherwise, it shall be equivalent
|
|
to the \fIvi\fP \fB?\fP command with no characters entered
|
|
by the user.
|
|
.LP
|
|
If the \fBn\fP command is used as a motion command for the \fB!\fP
|
|
command, the editor shall not enter text input mode on the
|
|
last line on the screen, and shall behave as if the user entered a
|
|
single \fB'!'\fP character as the text input.
|
|
.SS Repeat Regular Expression Find (Reverse)
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBN
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Scan for the next match of the last pattern given to \fB/\fP or \fB?\fP,
|
|
but in the reverse direction; this is the reverse of
|
|
\fBn\fP.
|
|
.LP
|
|
If the remembered search direction was forward, the \fBN\fP command
|
|
shall be equivalent to the \fIvi\fP \fB?\fP command with
|
|
no characters entered by the user. Otherwise, it shall be equivalent
|
|
to the \fIvi\fP \fB/\fP command with no characters entered
|
|
by the user. If the \fBN\fP command is used as a motion command for
|
|
the \fB!\fP command, the editor shall not enter text input
|
|
mode on the last line on the screen, and shall behave as if the user
|
|
entered a single \fB!\fP character as the text input.
|
|
.SS Insert Empty Line Below
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBo
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Enter text input mode in a new line appended after the current line.
|
|
A \fIcount\fP shall cause the input text to be appended
|
|
\fIcount\fP -1 more times to the end of the already added text, each
|
|
time starting on a new, appended line.
|
|
.LP
|
|
\fICurrent line/column\fP: As specified for the text input commands
|
|
(see Input Mode Commands in
|
|
vi ).
|
|
.SS Insert Empty Line Above
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBO
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Enter text input mode in a new line inserted before the current line.
|
|
A \fIcount\fP shall cause the input text to be appended
|
|
\fIcount\fP -1 more times to the end of the already added text, each
|
|
time starting on a new, appended line.
|
|
.LP
|
|
\fICurrent line/column\fP: As specified for the text input commands
|
|
(see Input Mode Commands in
|
|
vi ).
|
|
.SS Put from Buffer Following
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB]\fP \fBp
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If no \fIbuffer\fP is specified, the unnamed buffer shall be used.
|
|
.LP
|
|
If the buffer text is in line mode, the text shall be appended below
|
|
the current line, and each line of the buffer shall become
|
|
a new line in the edit buffer. A \fIcount\fP shall cause the buffer
|
|
text to be appended \fIcount\fP -1 more times to the end of
|
|
the already added text, each time starting on a new, appended line.
|
|
.LP
|
|
If the buffer text is in character mode, the text shall be appended
|
|
into the current line after the cursor, and each line of the
|
|
buffer other than the first and last shall become a new line in the
|
|
edit buffer. A \fIcount\fP shall cause the buffer text to be
|
|
appended \fIcount\fP -1 more times to the end of the already added
|
|
text, each time starting after the last added character.
|
|
.LP
|
|
\fICurrent line\fP: If the buffer text is in line mode, set the line
|
|
to line +1; otherwise, unchanged.
|
|
.LP
|
|
\fICurrent column\fP: If the buffer text is in line mode:
|
|
.IP " 1." 4
|
|
If there is a non- <blank> in the first line of the buffer, set to
|
|
the last column on which any portion of the first non-
|
|
<blank> in the line is displayed.
|
|
.LP
|
|
.IP " 2." 4
|
|
If there is no non- <blank> in the first line of the buffer, set to
|
|
the last column on which any portion of the last non-
|
|
<newline> in the first line of the buffer is displayed.
|
|
.LP
|
|
.LP
|
|
If the buffer text is in character mode:
|
|
.IP " 1." 4
|
|
If the text in the buffer is from more than a single line, then set
|
|
to the last column on which any portion of the first
|
|
character from the buffer is displayed.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, if the buffer is the unnamed buffer, set to the last column
|
|
on which any portion of the last character from the
|
|
buffer is displayed.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, set to the first column on which any portion of the first
|
|
character from the buffer is displayed.
|
|
.LP
|
|
.SS Put from Buffer Before
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB]\fP \fBP
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If no \fIbuffer\fP is specified, the unnamed buffer shall be used.
|
|
.LP
|
|
If the buffer text is in line mode, the text shall be inserted above
|
|
the current line, and each line of the buffer shall become
|
|
a new line in the edit buffer. A \fIcount\fP shall cause the buffer
|
|
text to be appended \fIcount\fP -1 more times to the end of
|
|
the already added text, each time starting on a new, appended line.
|
|
.LP
|
|
If the buffer text is in character mode, the text shall be inserted
|
|
into the current line before the cursor, and each line of
|
|
the buffer other than the first and last shall become a new line in
|
|
the edit buffer. A \fIcount\fP shall cause the buffer text to
|
|
be appended \fIcount\fP -1 more times to the end of the already added
|
|
text, each time starting after the last added character.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: If the buffer text is in line mode:
|
|
.IP " 1." 4
|
|
If there is a non- <blank> in the first line of the buffer, set to
|
|
the last column on which any portion of that character
|
|
is displayed.
|
|
.LP
|
|
.IP " 2." 4
|
|
If there is no non- <blank> in the first line of the buffer, set to
|
|
the last column on which any portion of the last non-
|
|
<newline> in the first line of the buffer is displayed.
|
|
.LP
|
|
.LP
|
|
If the buffer text is in character mode:
|
|
.IP " 1." 4
|
|
If the buffer is the unnamed buffer, set to the last column on which
|
|
any portion of the last character from the buffer is
|
|
displayed.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, set to the first column on which any portion of the first
|
|
character from the buffer is displayed.
|
|
.LP
|
|
.SS Enter ex Mode
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBQ
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Leave visual or open mode and enter \fIex\fP command mode.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS Replace Character
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBr\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Replace the \fIcount\fP characters at and after the cursor with the
|
|
specified character. If there are less than \fIcount\fP
|
|
non- <newline>s at and after the cursor on the line, it shall be an
|
|
error.
|
|
.LP
|
|
If character is <control>-V, any next character other than the <newline>
|
|
shall be stripped of any special meaning
|
|
and used as a literal character.
|
|
.LP
|
|
If character is <ESC>, no replacement shall be made and the current
|
|
line and current column shall be unchanged.
|
|
.LP
|
|
If character is <carriage-return> or <newline>, \fIcount\fP new lines
|
|
shall be appended to the current line. All
|
|
but the last of these lines shall be empty. \fIcount\fP characters
|
|
at and after the cursor shall be discarded, and any remaining
|
|
characters after the cursor in the current line shall be moved to
|
|
the last of the new lines. If the \fBautoindent\fP edit option
|
|
is set, they shall be preceded by the same number of \fBautoindent\fP
|
|
characters found on the line from which the command was
|
|
executed.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged unless the replacement character is
|
|
a <carriage-return> or <newline>, in which case
|
|
it shall be set to line + \fIcount\fP.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column position on which a portion
|
|
of the last replaced character is displayed, or if the
|
|
replacement character caused new lines to be created, set to non-
|
|
<blank>.
|
|
.SS Replace Characters
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBR
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Enter text input mode at the current cursor position possibly replacing
|
|
text on the current line. A \fIcount\fP shall cause the
|
|
input text to be appended \fIcount\fP -1 more times to the end of
|
|
the input.
|
|
.LP
|
|
\fICurrent line/column\fP: As specified for the text input commands
|
|
(see Input Mode Commands in
|
|
vi ).
|
|
.SS Substitute Character
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBs
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIvi\fP command:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBc<space>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.SS Substitute Lines
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBS
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIvi\fP command:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBc_
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.SS Move Cursor to Before Character (Forward)
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBt\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if \fIcount\fP occurrences of the character do
|
|
not occur after the cursor in the line.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
The text region shall be from the cursor up to but not including the
|
|
\fIcount\fPth occurrence of the specified character after
|
|
the cursor.
|
|
.LP
|
|
.IP " 2." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the character before the \fIcount\fPth occurrence of the
|
|
specified character after the cursor appears in the line.
|
|
.SS Move Cursor to After Character (Reverse)
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBT\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
It shall be an error if \fIcount\fP occurrences of the character do
|
|
not occur before the cursor in the line.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the character before the cursor is the specified character, it
|
|
shall be an error.
|
|
.LP
|
|
.IP " 2." 4
|
|
The text region shall be from the character before the cursor up to
|
|
but not including the \fIcount\fPth occurrence of the
|
|
specified character before the cursor.
|
|
.LP
|
|
.IP " 3." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any portion
|
|
of the character after the \fIcount\fPth occurrence of the
|
|
specified character before the cursor appears in the line.
|
|
.SS Undo
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBu
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fBundo\fP command
|
|
except that the current
|
|
line and current column shall be set as follows:
|
|
.LP
|
|
\fICurrent line\fP: Set to the first line added or changed if any;
|
|
otherwise, move to the line preceding any deleted text if
|
|
one exists; otherwise, move to line 1.
|
|
.LP
|
|
\fICurrent column\fP: If undoing an \fIex\fP command, set to the first
|
|
non-
|
|
<blank>.
|
|
.LP
|
|
Otherwise, if undoing a text input command:
|
|
.IP " 1." 4
|
|
If the command was a \fBC\fP, \fBc\fP, \fBO\fP, \fBo\fP, \fBR\fP,
|
|
\fBS\fP, or \fBs\fP command, the current column shall
|
|
be set to the value it held when the text input command was entered.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, set to the last column in which any portion of the first
|
|
character after the deleted text is displayed, or, if no
|
|
non- <newline>s follow the text deleted from this line, set to the
|
|
last column in which any portion of the last non-
|
|
<newline> in the line is displayed, or 1 if the line is empty.
|
|
.LP
|
|
.LP
|
|
Otherwise, if a single line was modified (that is, not added or deleted)
|
|
by the \fBu\fP command:
|
|
.IP " 1." 4
|
|
If text was added or changed, set to the last column in which any
|
|
portion of the first character added or changed is
|
|
displayed.
|
|
.LP
|
|
.IP " 2." 4
|
|
If text was deleted, set to the last column in which any portion of
|
|
the first character after the deleted text is displayed, or,
|
|
if no non- <newline>s follow the deleted text, set to the last column
|
|
in which any portion of the last non- <newline>
|
|
in the line is displayed, or 1 if the line is empty.
|
|
.LP
|
|
.LP
|
|
Otherwise, set to non- <blank>.
|
|
.SS Undo Current Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBU
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Restore the current line to its state immediately before the most
|
|
recent time that it became the current line.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to the first column in the line in which
|
|
any portion of the first character in the line is
|
|
displayed.
|
|
.SS Move to Beginning of Word
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBw
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
With the exception that words are used as the delimiter instead of
|
|
bigwords, this command shall be equivalent to the \fBW\fP
|
|
command.
|
|
.SS Move to Beginning of Bigword
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBW
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the edit buffer is empty, it shall be an error. If there are less
|
|
than \fIcount\fP bigwords between the cursor and the end
|
|
of the edit buffer, \fIcount\fP shall be adjusted to move the cursor
|
|
to the last bigword in the edit buffer.
|
|
.LP
|
|
If used as a motion command:
|
|
.IP " 1." 4
|
|
If the associated command is \fBc\fP, \fIcount\fP is 1, and the cursor
|
|
is on a <blank>, the region of text shall be the
|
|
current character and no further action shall be taken.
|
|
.LP
|
|
.IP " 2." 4
|
|
If there are less than \fIcount\fP bigwords between the cursor and
|
|
the end of the edit buffer, then the command shall succeed,
|
|
and the region of text shall include the last character of the edit
|
|
buffer.
|
|
.LP
|
|
.IP " 3." 4
|
|
If there are <blank>s or an end-of-line that precede the \fIcount\fPth
|
|
bigword, and the associated command is \fBc\fP,
|
|
the region of text shall be up to and including the last character
|
|
before the preceding <blank>s or end-of-line.
|
|
.LP
|
|
.IP " 4." 4
|
|
If there are <blank>s or an end-of-line that precede the bigword,
|
|
and the associated command is \fBd\fP or \fBy\fP, the
|
|
region of text shall be up to and including the last <blank> before
|
|
the start of the bigword or end-of-line.
|
|
.LP
|
|
.IP " 5." 4
|
|
Any text copied to a buffer shall be in character mode.
|
|
.LP
|
|
.LP
|
|
If not used as a motion command:
|
|
.IP " 1." 4
|
|
If the cursor is on the last character of the edit buffer, it shall
|
|
be an error.
|
|
.LP
|
|
.LP
|
|
\fICurrent line\fP: Set to the line containing the current column.
|
|
.LP
|
|
\fICurrent column\fP: Set to the last column in which any part of
|
|
the first character of the \fIcount\fPth next bigword is
|
|
displayed.
|
|
.SS Delete Character at Cursor
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBx
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Delete the \fIcount\fP characters at and after the current character
|
|
into \fIbuffer\fP, if specified, and into the unnamed
|
|
buffer.
|
|
.LP
|
|
If the line is empty, it shall be an error. If there are less than
|
|
\fIcount\fP non- <newline>s at and after the cursor on
|
|
the current line, \fIcount\fP shall be adjusted to the number of non-
|
|
<newline>s at and after the cursor.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: If the line is empty, set to column position
|
|
1. Otherwise, if there were \fIcount\fP or less non-
|
|
<newline>s at and after the cursor on the current line, set to the
|
|
last column that displays any part of the last non-
|
|
<newline> of the line. Otherwise, unchanged.
|
|
.SS Delete Character Before Cursor
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBX
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Delete the \fIcount\fP characters before the current character into
|
|
\fIbuffer\fP, if specified, and into the unnamed
|
|
buffer.
|
|
.LP
|
|
If there are no characters before the current character on the current
|
|
line, it shall be an error. If there are less than
|
|
\fIcount\fP previous characters on the current line, \fIcount\fP shall
|
|
be adjusted to the number of previous characters on the
|
|
line.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to (current column - the width of the deleted
|
|
characters).
|
|
.SS Yank
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBy\fP \fImotion\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Copy (yank) the region of text into \fIbuffer\fP, if specified, and
|
|
into the unnamed buffer.
|
|
.LP
|
|
If the motion command is the \fBy\fP command repeated:
|
|
.IP " 1." 4
|
|
The buffer shall be in line mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
If there are less than \fIcount\fP -1 lines after the current line
|
|
in the edit buffer, it shall be an error.
|
|
.LP
|
|
.IP " 3." 4
|
|
The text region shall be from the current line up to and including
|
|
the next \fIcount\fP -1 lines.
|
|
.LP
|
|
.LP
|
|
Otherwise, the buffer text mode and text region shall be as specified
|
|
by the motion command.
|
|
.LP
|
|
\fICurrent line\fP: If the motion was from the current cursor position
|
|
toward the end of the edit buffer, unchanged. Otherwise,
|
|
set to the first line in the edit buffer that is part of the text
|
|
region specified by the motion command.
|
|
.LP
|
|
\fICurrent column\fP:
|
|
.IP " 1." 4
|
|
If the motion was from the current cursor position toward the end
|
|
of the edit buffer, unchanged.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, if the current line is empty, set to column position 1.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, set to the last column that displays any part of the first
|
|
character in the file that is part of the text region
|
|
specified by the motion command.
|
|
.LP
|
|
.SS Yank Current Line
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBY
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIvi\fP command:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIbuffer\fP\fB][\fP\fIcount\fP\fB]\fP \fBy_
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.SS Redraw Window
|
|
.LP
|
|
If in open mode, the \fBz\fP command shall have the Synopsis:
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIcount\fP\fB]\fP \fBz
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If \fIcount\fP is not specified, it shall default to the \fBwindow\fP
|
|
edit option -1. The \fBz\fP command shall be equivalent
|
|
to the \fIex\fP \fBz\fP command, with a type character of \fB=\fP
|
|
and a \fIcount\fP of
|
|
\fIcount\fP -2, except that the current line and current column shall
|
|
be set as follows, and the \fBwindow\fP edit option shall
|
|
not be affected. If the calculation for the \fIcount\fP argument would
|
|
result in a negative number, the \fIcount\fP argument to
|
|
the \fIex\fP \fBz\fP command shall be zero. A blank line shall be
|
|
written after the last line
|
|
is written.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.LP
|
|
If not in open mode, the \fBz\fP command shall have the following
|
|
Synopsis:
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB[\fP\fIline\fP\fB]\fP \fBz\fP \fB[\fP\fIcount\fP\fB]\fP \fIcharacter\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If \fIline\fP is not specified, it shall default to the current line.
|
|
If \fIline\fP is specified, but is greater than the
|
|
number of lines in the edit buffer, it shall default to the number
|
|
of lines in the edit buffer.
|
|
.LP
|
|
If \fIcount\fP is specified, the value of the \fBwindow\fP edit option
|
|
shall be set to \fIcount\fP (as described in the \fIex\fP \fBwindow\fP
|
|
command), and the screen shall be redrawn.
|
|
.LP
|
|
\fIline\fP shall be placed as specified by the following characters:
|
|
.TP 7
|
|
<newline>,\ <carriage-return>
|
|
.sp
|
|
Place the beginning of the line on the first line of the display.
|
|
.TP 7
|
|
\fB\&.\fP
|
|
Place the beginning of the line in the center of the display. The
|
|
middle line of the display shall be calculated as described
|
|
for the \fBM\fP command.
|
|
.TP 7
|
|
\fB-\fP
|
|
Place an unspecified portion of the line on the last line of the display.
|
|
.TP 7
|
|
\fB+\fP
|
|
If \fIline\fP was specified, equivalent to the <newline> case. If
|
|
\fIline\fP was not specified, display a screen where
|
|
the first line of the display shall be (current last line) +1. If
|
|
there are no lines after the last line in the display, it shall
|
|
be an error.
|
|
.TP 7
|
|
\fB^\fP
|
|
If \fIline\fP was specified, display a screen where the last line
|
|
of the display shall contain an unspecified portion of the
|
|
first line of a display that had an unspecified portion of the specified
|
|
line on the last line of the display. If this calculation
|
|
results in a line before the beginning of the edit buffer, display
|
|
the first screen of the edit buffer.
|
|
.LP
|
|
Otherwise, display a screen where the last line of the display shall
|
|
contain an unspecified portion of (current first line -1).
|
|
If this calculation results in a line before the beginning of the
|
|
edit buffer, it shall be an error.
|
|
.sp
|
|
.LP
|
|
\fICurrent line\fP: If \fIline\fP and the \fB'^'\fP character were
|
|
specified:
|
|
.IP " 1." 4
|
|
If the first screen was displayed as a result of the command attempting
|
|
to display lines before the beginning of the edit
|
|
buffer: if the first screen was already displayed, unchanged; otherwise,
|
|
set to (current first line -1).
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, set to the last line of the display.
|
|
.LP
|
|
.LP
|
|
If \fIline\fP and the \fB'+'\fP character were specified, set to the
|
|
first line of the display.
|
|
.LP
|
|
Otherwise, if \fIline\fP was specified, set to \fIline\fP.
|
|
.LP
|
|
Otherwise, unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to non- <blank>.
|
|
.SS Exit
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBZZ
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
This command shall be equivalent to the \fIex\fP \fBxit\fP command
|
|
with no addresses,
|
|
trailing \fB!\fP, or filename (see the \fIex\fP \fBxit\fP command).
|
|
.SS Input Mode Commands in vi
|
|
.LP
|
|
In text input mode, the current line shall consist of zero or more
|
|
of the following categories, plus the terminating
|
|
<newline>:
|
|
.IP " 1." 4
|
|
Characters preceding the text input entry point
|
|
.LP
|
|
Characters in this category shall not be modified during text input
|
|
mode.
|
|
.LP
|
|
.IP " 2." 4
|
|
\fBautoindent\fP characters
|
|
.LP
|
|
\fBautoindent\fP characters shall be automatically inserted into each
|
|
line that is created in text input mode, either as a
|
|
result of entering a <newline> or <carriage-return> while in text
|
|
input mode, or as an effect of the command itself;
|
|
for example, \fBO\fP or \fBo\fP (see the \fIex\fP \fBautoindent\fP
|
|
command), as if entered
|
|
by the user.
|
|
.LP
|
|
It shall be possible to erase \fBautoindent\fP characters with the
|
|
<control>-D command; it is unspecified whether they
|
|
can be erased by <control>-H, <control>-U, and <control>-W characters.
|
|
Erasing any \fBautoindent\fP character
|
|
turns the glyph into erase-columns and deletes the character from
|
|
the edit buffer, but does not change its representation on the
|
|
screen.
|
|
.LP
|
|
.IP " 3." 4
|
|
Text input characters
|
|
.LP
|
|
Text input characters are the characters entered by the user. Erasing
|
|
any text input character turns the glyph into
|
|
erase-columns and deletes the character from the edit buffer, but
|
|
does not change its representation on the screen.
|
|
.LP
|
|
Each text input character entered by the user (that does not have
|
|
a special meaning) shall be treated as follows:
|
|
.RS
|
|
.IP " a." 4
|
|
The text input character shall be appended to the last character in
|
|
the edit buffer from the first, second, or third
|
|
categories.
|
|
.LP
|
|
.IP " b." 4
|
|
If there are no erase-columns on the screen, the text input command
|
|
was the \fBR\fP command, and characters in the fifth
|
|
category from the original line follow the cursor, the next such character
|
|
shall be deleted from the edit buffer. If the
|
|
\fBslowopen\fP edit option is not set, the corresponding glyph on
|
|
the screen shall become erase-columns.
|
|
.LP
|
|
.IP " c." 4
|
|
If there are erase-columns on the screen, as many columns as they
|
|
occupy, or as are necessary, shall be overwritten to display
|
|
the text input character. (If only part of a multi-column glyph is
|
|
overwritten, the remainder shall be left on the screen, and
|
|
continue to be treated as erase-columns; it is unspecified whether
|
|
the remainder of the glyph is modified in any way.)
|
|
.LP
|
|
.IP " d." 4
|
|
If additional display line columns are needed to display the text
|
|
input character:
|
|
.RS
|
|
.IP " 1." 4
|
|
If the \fBslowopen\fP edit option is set, the text input characters
|
|
shall be displayed on subsequent display line columns,
|
|
overwriting any characters displayed in those columns.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, any characters currently displayed on or after the column
|
|
on the display line where the text input character is to be
|
|
displayed shall be pushed ahead the number of display line columns
|
|
necessary to display the rest of the text input character.
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.RE
|
|
.LP
|
|
.IP " 4." 4
|
|
Erase-columns
|
|
.LP
|
|
Erase-columns are not logically part of the edit buffer, appearing
|
|
only on the screen, and may be overwritten on the screen by
|
|
subsequent text input characters. When text input mode ends, all erase-columns
|
|
shall no longer appear on the screen.
|
|
.LP
|
|
Erase-columns are initially the region of text specified by the \fBc\fP
|
|
command (see Change );
|
|
however, erasing \fBautoindent\fP or text input characters causes
|
|
the glyphs of the erased characters to be treated as
|
|
erase-columns.
|
|
.LP
|
|
.IP " 5." 4
|
|
Characters following the text region for the \fBc\fP command, or the
|
|
text input entry point for all other commands
|
|
.LP
|
|
Characters in this category shall not be modified during text input
|
|
mode, except as specified in category 3.b. for the \fBR\fP
|
|
text input command, or as <blank>s deleted when a <newline> or <carriage-return>
|
|
is entered.
|
|
.LP
|
|
.LP
|
|
It is unspecified whether it is an error to attempt to erase past
|
|
the beginning of a line that was created by the entry of a
|
|
<newline> or <carriage-return> during text input mode. If it is not
|
|
an error, the editor shall behave as if the erasing
|
|
character was entered immediately after the last text input character
|
|
entered on the previous line, and all of the non-
|
|
<newline>s on the current line shall be treated as erase-columns.
|
|
.LP
|
|
When text input mode is entered, or after a text input mode character
|
|
is entered (except as specified for the special characters
|
|
below), the cursor shall be positioned as follows:
|
|
.IP " 1." 4
|
|
On the first column that displays any part of the first erase-column,
|
|
if one exists
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, if the \fBslowopen\fP edit option is set, on the first
|
|
display line column after the last character in the first,
|
|
second, or third categories, if one exists
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, the first column that displays any part of the first character
|
|
in the fifth category, if one exists
|
|
.LP
|
|
.IP " 4." 4
|
|
Otherwise, the display line column after the last character in the
|
|
first, second, or third categories, if one exists
|
|
.LP
|
|
.IP " 5." 4
|
|
Otherwise, on column position 1
|
|
.LP
|
|
.LP
|
|
The characters that are updated on the screen during text input mode
|
|
are unspecified, other than that the last text input
|
|
character shall always be updated, and, if the \fBslowopen\fP edit
|
|
option is not set, the current cursor character shall always be
|
|
updated.
|
|
.LP
|
|
The following specifications are for command characters entered during
|
|
text input mode.
|
|
.SS NUL
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBNUL
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If the first character of the text input is a NUL, the most recently
|
|
input text shall be input as if entered by the user, and
|
|
then text input mode shall be exited. The text shall be input literally;
|
|
that is, characters are neither macro or abbreviation
|
|
expanded, nor are any characters interpreted in any special manner.
|
|
It is unspecified whether implementations shall support more
|
|
than 256 bytes of remembered input text.
|
|
.SS <control>-D
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-D
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
The <control>-D character shall have no special meaning when in text
|
|
input mode for a line-oriented command (see Command Descriptions in
|
|
vi ).
|
|
.LP
|
|
This command need not be supported on block-mode terminals.
|
|
.LP
|
|
If the cursor does not follow an \fBautoindent\fP character, or an
|
|
\fBautoindent\fP character and a \fB'0'\fP or
|
|
\fB'^'\fP character:
|
|
.IP " 1." 4
|
|
If the cursor is in column position 1, the <control>-D character shall
|
|
be discarded and no further action taken.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, the <control>-D character shall have no special meaning.
|
|
.LP
|
|
.LP
|
|
If the last input character was a \fB'0'\fP , the cursor shall be
|
|
moved to column position 1.
|
|
.LP
|
|
Otherwise, if the last input character was a \fB'^'\fP , the cursor
|
|
shall be moved to column position 1. In addition, the
|
|
\fBautoindent\fP level for the next input line shall be derived from
|
|
the same line from which the \fBautoindent\fP level for the
|
|
current input line was derived.
|
|
.LP
|
|
Otherwise, the cursor shall be moved back to the column after the
|
|
previous shiftwidth (see the \fIex\fP \fBshiftwidth\fP command) boundary.
|
|
.LP
|
|
All of the glyphs on columns between the starting cursor position
|
|
and (inclusively) the ending cursor position shall become
|
|
erase-columns as described in Input Mode Commands in vi .
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to 1 if the <control>-D was preceded by
|
|
a \fB'^'\fP or \fB'0'\fP ; otherwise, set to
|
|
(column -1) -((column -2) % \fBshiftwidth\fP).
|
|
.SS <control>-H
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-H
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If in text input mode for a line-oriented command, and there are no
|
|
characters to erase, text input mode shall be terminated, no
|
|
further action shall be done for this command, and the current line
|
|
and column shall be unchanged.
|
|
.LP
|
|
If there are characters other than \fBautoindent\fP characters that
|
|
have been input on the current line before the cursor, the
|
|
cursor shall move back one character.
|
|
.LP
|
|
Otherwise, if there are \fBautoindent\fP characters on the current
|
|
line before the cursor, it is implementation-defined whether
|
|
the <control>-H command is an error or if the cursor moves back one
|
|
\fBautoindent\fP character.
|
|
.LP
|
|
Otherwise, if the cursor is in column position 1 and there are previous
|
|
lines that have been input, it is implementation-defined
|
|
whether the <control>-H command is an error or if it is equivalent
|
|
to entering <control>-H after the last input
|
|
character on the previous input line.
|
|
.LP
|
|
Otherwise, it shall be an error.
|
|
.LP
|
|
All of the glyphs on columns between the starting cursor position
|
|
and (inclusively) the ending cursor position shall become
|
|
erase-columns as described in Input Mode Commands in vi .
|
|
.LP
|
|
The current erase character (see \fIstty\fP) shall cause an equivalent
|
|
action to the
|
|
<control>-H command, unless the previously inserted character was
|
|
a backslash, in which case it shall be as if the literal
|
|
current erase character had been inserted instead of the backslash.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged, unless previously input lines are erased,
|
|
in which case it shall be set to line -1.
|
|
.LP
|
|
\fICurrent column\fP: Set to the first column that displays any portion
|
|
of the character backed up over.
|
|
.SS <newline>
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<newline>
|
|
.sp
|
|
|
|
<carriage-return>
|
|
.sp
|
|
|
|
<control>-J
|
|
.sp
|
|
|
|
<control>-M
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If input was part of a line-oriented command, text input mode shall
|
|
be terminated and the command shall continue execution with
|
|
the input provided.
|
|
.LP
|
|
Otherwise, terminate the current line. If there are no characters
|
|
other than \fBautoindent\fP characters on the line, all
|
|
characters on the line shall be discarded. Otherwise, it is unspecified
|
|
whether the \fBautoindent\fP characters in the line are
|
|
modified by entering these characters.
|
|
.LP
|
|
Continue text input mode on a new line appended after the current
|
|
line. If the \fBslowopen\fP edit option is set, the lines on
|
|
the screen below the current line shall not be pushed down, but the
|
|
first of them shall be cleared and shall appear to be
|
|
overwritten. Otherwise, the lines of the screen below the current
|
|
line shall be pushed down.
|
|
.LP
|
|
If the \fBautoindent\fP edit option is set, an appropriate number
|
|
of \fBautoindent\fP characters shall be added as a prefix to
|
|
the line as described by the \fIex\fP \fBautoindent\fP edit option.
|
|
.LP
|
|
All columns after the cursor that are erase-columns (as described
|
|
in Input Mode Commands in vi )
|
|
shall be discarded.
|
|
.LP
|
|
If the \fBautoindent\fP edit option is set, all <blank>s immediately
|
|
following the cursor shall be discarded.
|
|
.LP
|
|
All remaining characters after the cursor shall be transferred to
|
|
the new line, positioned after any \fBautoindent\fP
|
|
characters.
|
|
.LP
|
|
\fICurrent line\fP: Set to current line +1.
|
|
.LP
|
|
\fICurrent column\fP: Set to the first column that displays any portion
|
|
of the first character after the \fBautoindent\fP
|
|
characters on the new line, if any, or the first column position after
|
|
the last \fBautoindent\fP character, if any, or column
|
|
position 1.
|
|
.SS <control>-T
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-T
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
The <control>-T character shall have no special meaning when in text
|
|
input mode for a line-oriented command (see Command Descriptions in
|
|
vi ).
|
|
.LP
|
|
This command need not be supported on block-mode terminals.
|
|
.LP
|
|
Behave as if the user entered the minimum number of <blank>s necessary
|
|
to move the cursor forward to the column position
|
|
after the next \fBshiftwidth\fP (see the \fIex\fP \fBshiftwidth\fP
|
|
command) boundary.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Set to \fIcolumn\fP + \fBshiftwidth\fP - ((column
|
|
-1) % \fBshiftwidth\fP).
|
|
.SS <control>-U
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-U
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are characters other than \fBautoindent\fP characters that
|
|
have been input on the current line before the cursor, the
|
|
cursor shall move to the first character input after the \fBautoindent\fP
|
|
characters.
|
|
.LP
|
|
Otherwise, if there are \fBautoindent\fP characters on the current
|
|
line before the cursor, it is implementation-defined whether
|
|
the <control>-U command is an error or if the cursor moves to the
|
|
first column position on the line.
|
|
.LP
|
|
Otherwise, if the cursor is in column position 1 and there are previous
|
|
lines that have been input, it is implementation-defined
|
|
whether the <control>-U command is an error or if it is equivalent
|
|
to entering <control>-U after the last input
|
|
character on the previous input line.
|
|
.LP
|
|
Otherwise, it shall be an error.
|
|
.LP
|
|
All of the glyphs on columns between the starting cursor position
|
|
and (inclusively) the ending cursor position shall become
|
|
erase-columns as described in Input Mode Commands in vi .
|
|
.LP
|
|
The current \fIkill\fP character (see \fIstty\fP) shall cause an equivalent
|
|
action to the
|
|
<control>-U command, unless the previously inserted character was
|
|
a backslash, in which case it shall be as if the literal
|
|
current \fIkill\fP character had been inserted instead of the backslash.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged, unless previously input lines are erased,
|
|
in which case it shall be set to line -1.
|
|
.LP
|
|
\fICurrent column\fP: Set to the first column that displays any portion
|
|
of the last character backed up over.
|
|
.SS <control>-V
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-V
|
|
.sp
|
|
|
|
<control>-Q
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
Allow the entry of any subsequent character, other than <control>-J
|
|
or the <newline>, as a literal character,
|
|
removing any special meaning that it may have to the editor in text
|
|
input mode. If a <control>-V or <control>-Q is
|
|
entered before a <control>-J or <newline>, the <control>-V or <control>-Q
|
|
character shall be discarded, and
|
|
the <control>-J or <newline> shall behave as described in the <newline>
|
|
command character during input mode.
|
|
.LP
|
|
For purposes of the display only, the editor shall behave as if a
|
|
\fB'^'\fP character was entered, and the cursor shall be
|
|
positioned as if overwriting the \fB'^'\fP character. When a subsequent
|
|
character is entered, the editor shall behave as if that
|
|
character was entered instead of the original <control>-V or <control>-Q
|
|
character.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP: Unchanged.
|
|
.SS <control>-W
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<control>-W
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If there are characters other than \fBautoindent\fP characters that
|
|
have been input on the current line before the cursor, the
|
|
cursor shall move back over the last word preceding the cursor (including
|
|
any <blank>s between the end of the last word and
|
|
the current cursor); the cursor shall not move to before the first
|
|
character after the end of any \fBautoindent\fP characters.
|
|
.LP
|
|
Otherwise, if there are \fBautoindent\fP characters on the current
|
|
line before the cursor, it is implementation-defined whether
|
|
the <control>-W command is an error or if the cursor moves to the
|
|
first column position on the line.
|
|
.LP
|
|
Otherwise, if the cursor is in column position 1 and there are previous
|
|
lines that have been input, it is implementation-defined
|
|
whether the <control>-W command is an error or if it is equivalent
|
|
to entering <control>-W after the last input
|
|
character on the previous input line.
|
|
.LP
|
|
Otherwise, it shall be an error.
|
|
.LP
|
|
All of the glyphs on columns between the starting cursor position
|
|
and (inclusively) the ending cursor position shall become
|
|
erase-columns as described in Input Mode Commands in vi .
|
|
.LP
|
|
\fICurrent line\fP: Unchanged, unless previously input lines are erased,
|
|
in which case it shall be set to line -1.
|
|
.LP
|
|
\fICurrent column\fP: Set to the first column that displays any portion
|
|
of the last character backed up over.
|
|
.SS <ESC>
|
|
.TP 7
|
|
\fISynopsis\fP:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB<ESC>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.sp
|
|
.LP
|
|
If input was part of a line-oriented command:
|
|
.IP " 1." 4
|
|
If \fIinterrupt\fP was entered, text input mode shall be terminated
|
|
and the editor shall return to command mode. The terminal
|
|
shall be alerted.
|
|
.LP
|
|
.IP " 2." 4
|
|
If <ESC> was entered, text input mode shall be terminated and the
|
|
command shall continue execution with the input
|
|
provided.
|
|
.LP
|
|
.LP
|
|
Otherwise, terminate text input mode and return to command mode.
|
|
.LP
|
|
Any \fBautoindent\fP characters entered on newly created lines that
|
|
have no other non- <newline>s shall be deleted.
|
|
.LP
|
|
Any leading \fBautoindent\fP and <blank>s on newly created lines shall
|
|
be rewritten to be the minimum number of
|
|
<blank>s possible.
|
|
.LP
|
|
The screen shall be redisplayed as necessary to match the contents
|
|
of the edit buffer.
|
|
.LP
|
|
\fICurrent line\fP: Unchanged.
|
|
.LP
|
|
\fICurrent column\fP:
|
|
.IP " 1." 4
|
|
If there are text input characters on the current line, the column
|
|
shall be set to the last column where any portion of the last
|
|
text input character is displayed.
|
|
.LP
|
|
.IP " 2." 4
|
|
Otherwise, if a character is displayed in the current column, unchanged.
|
|
.LP
|
|
.IP " 3." 4
|
|
Otherwise, set to column position 1.
|
|
.LP
|
|
.SH EXIT STATUS
|
|
.LP
|
|
The following exit values shall be returned:
|
|
.TP 7
|
|
\ 0
|
|
Successful completion.
|
|
.TP 7
|
|
>0
|
|
An error occurred.
|
|
.sp
|
|
.SH CONSEQUENCES OF ERRORS
|
|
.LP
|
|
When any error is encountered and the standard input is not a terminal
|
|
device file, \fIvi\fP shall not write the file or return
|
|
to command or text input mode, and shall terminate with a non-zero
|
|
exit status.
|
|
.LP
|
|
Otherwise, when an unrecoverable error is encountered it shall be
|
|
equivalent to a SIGHUP asynchronous event.
|
|
.LP
|
|
Otherwise, when an error is encountered, the editor shall behave as
|
|
specified in Command
|
|
Descriptions in vi .
|
|
.LP
|
|
\fIThe following sections are informative.\fP
|
|
.SH APPLICATION USAGE
|
|
.LP
|
|
None.
|
|
.SH EXAMPLES
|
|
.LP
|
|
None.
|
|
.SH RATIONALE
|
|
.LP
|
|
See the RATIONALE for \fIex\fP for more information on \fIvi\fP. Major
|
|
portions of the \fIvi\fP utility
|
|
specification point to \fIex\fP to avoid inadvertent divergence. While
|
|
\fIex\fP and \fIvi\fP have historically been implemented as a single
|
|
utility, this is not required by
|
|
IEEE\ Std\ 1003.1-2001.
|
|
.LP
|
|
It is recognized that portions of \fIvi\fP would be difficult, if
|
|
not impossible, to implement satisfactorily on a block-mode
|
|
terminal, or a terminal without any form of cursor addressing, thus
|
|
it is not a mandatory requirement that such features should
|
|
work on all terminals. It is the intention, however, that a \fIvi\fP
|
|
implementation should provide the full set of capabilities on
|
|
all terminals capable of supporting them.
|
|
.LP
|
|
Historically, \fIvi\fP exited immediately if the standard input was
|
|
not a terminal. IEEE\ Std\ 1003.1-2001 permits, but
|
|
does not require, this behavior. An end-of-file condition is not equivalent
|
|
to an end-of-file character. A common end-of-file
|
|
character, <control>-D, is historically a \fIvi\fP command.
|
|
.LP
|
|
The text in the STDOUT section reflects the usage of the verb \fIdisplay\fP
|
|
in this section; some implementations of \fIvi\fP
|
|
use standard output to write to the terminal, but IEEE\ Std\ 1003.1-2001
|
|
does not require that to be the case.
|
|
.LP
|
|
Historically, implementations reverted to open mode if the terminal
|
|
was incapable of supporting full visual mode.
|
|
IEEE\ Std\ 1003.1-2001 requires this behavior. Historically, the open
|
|
mode of \fIvi\fP behaved roughly equivalently to the
|
|
visual mode, with the exception that only a single line from the edit
|
|
buffer (one "buffer line") was kept current at any time.
|
|
This line was normally displayed on the next-to-last line of a terminal
|
|
with cursor addressing (and the last line performed its
|
|
normal visual functions for line-oriented commands and messages).
|
|
In addition, some few commands behaved differently in open mode
|
|
than in visual mode. IEEE\ Std\ 1003.1-2001 requires conformance to
|
|
historical practice.
|
|
.LP
|
|
Historically, \fIex\fP and \fIvi\fP implementations have expected
|
|
text to proceed in the
|
|
usual European/Latin order of left to right, top to bottom. There
|
|
is no requirement in IEEE\ Std\ 1003.1-2001 that this be
|
|
the case. The specification was deliberately written using words like
|
|
"before", "after", "first", and "last" in order to
|
|
permit implementations to support the natural text order of the language.
|
|
.LP
|
|
Historically, lines past the end of the edit buffer were marked with
|
|
single tilde ( \fB'~'\fP ) characters; that is, if
|
|
the one-based display was 20 lines in length, and the last line of
|
|
the file was on line one, then lines 2-20 would contain only a
|
|
single \fB'~'\fP character.
|
|
.LP
|
|
Historically, the \fIvi\fP editor attempted to display only complete
|
|
lines at the bottom of the screen (it did display partial
|
|
lines at the top of the screen). If a line was too long to fit in
|
|
its entirety at the bottom of the screen, the screen lines where
|
|
the line would have been displayed were displayed as single \fB'@'\fP
|
|
characters, instead of displaying part of the line.
|
|
IEEE\ Std\ 1003.1-2001 permits, but does not require, this behavior.
|
|
Implementations are encouraged to attempt always to
|
|
display a complete line at the bottom of the screen when doing scrolling
|
|
or screen positioning by buffer lines.
|
|
.LP
|
|
Historically, lines marked with \fB'@'\fP were also used to minimize
|
|
output to dumb terminals over slow lines; that is,
|
|
changes local to the cursor were updated, but changes to lines on
|
|
the screen that were not close to the cursor were simply marked
|
|
with an \fB'@'\fP sign instead of being updated to match the current
|
|
text. IEEE\ Std\ 1003.1-2001 permits, but does not
|
|
require this feature because it is used ever less frequently as terminals
|
|
become smarter and connections are faster.
|
|
.SS Initialization in ex and vi
|
|
.LP
|
|
Historically, \fIvi\fP always had a line in the edit buffer, even
|
|
if the edit buffer was "empty". For example:
|
|
.IP " 1." 4
|
|
The \fIex\fP command \fB=\fP executed from visual mode wrote "1" when
|
|
the buffer was
|
|
empty.
|
|
.LP
|
|
.IP " 2." 4
|
|
Writes from visual mode of an empty edit buffer wrote files of a single
|
|
character (a <newline>), while writes from \fIex\fP mode of an empty
|
|
edit buffer wrote empty files.
|
|
.LP
|
|
.IP " 3." 4
|
|
Put and read commands into an empty edit buffer left an empty line
|
|
at the top of the edit buffer.
|
|
.LP
|
|
.LP
|
|
For consistency, IEEE\ Std\ 1003.1-2001 does not permit any of these
|
|
behaviors.
|
|
.LP
|
|
Historically, \fIvi\fP did not always return the terminal to its original
|
|
modes; for example, ICRNL was modified if it was not
|
|
originally set. IEEE\ Std\ 1003.1-2001 does not permit this behavior.
|
|
.SS Command Descriptions in vi
|
|
.LP
|
|
Motion commands are among the most complicated aspects of \fIvi\fP
|
|
to describe. With some exceptions, the text region and
|
|
buffer type effect of a motion command on a \fIvi\fP command are described
|
|
on a case-by-case basis. The descriptions of text
|
|
regions in IEEE\ Std\ 1003.1-2001 are not intended to imply direction;
|
|
that is, an inclusive region from line \fIn\fP to
|
|
line \fIn\fP+5 is identical to a region from line \fIn\fP+5 to line
|
|
\fIn\fP. This is of more than academic interest-movements to
|
|
marks can be in either direction, and, if the \fBwrapscan\fP option
|
|
is set, so can movements to search points. Historically, lines
|
|
are always stored into buffers in text order; that is, from the start
|
|
of the edit buffer to the end. IEEE\ Std\ 1003.1-2001
|
|
requires conformance to historical practice.
|
|
.LP
|
|
Historically, command counts were applied to any associated motion,
|
|
and were multiplicative to any supplied motion count. For
|
|
example, \fB2cw\fP is the same as \fBc2w\fP, and \fB2c3w\fP is the
|
|
same as \fBc6w\fP. IEEE\ Std\ 1003.1-2001 requires
|
|
this behavior. Historically, \fIvi\fP commands that used bigwords,
|
|
words, paragraphs, and sentences as objects treated groups of
|
|
empty lines, or lines that contained only <blank>s, inconsistently.
|
|
Some commands treated them as a single entity, while
|
|
others treated each line separately. For example, the \fBw\fP, \fBW\fP,
|
|
and \fBB\fP commands treated groups of empty lines as
|
|
individual words; that is, the command would move the cursor to each
|
|
new empty line. The \fBe\fP and \fBE\fP commands treated
|
|
groups of empty lines as a single word; that is, the first use would
|
|
move past the group of lines. The \fBb\fP command would just
|
|
beep at the user, or if done from the start of the line as a motion
|
|
command, fail in unexpected ways. If the lines contained only
|
|
(or ended with) <blank>s, the \fBw\fP and \fBW\fP commands would just
|
|
beep at the user, the \fBE\fP and \fBe\fP commands
|
|
would treat the group as a single word, and the \fBB\fP and \fBb\fP
|
|
commands would treat the lines as individual words. For
|
|
consistency and simplicity of specification, IEEE\ Std\ 1003.1-2001
|
|
requires that all \fIvi\fP commands treat groups of
|
|
empty or blank lines as a single entity, and that movement through
|
|
lines ending with <blank>s be consistent with other
|
|
movements.
|
|
.LP
|
|
Historically, \fIvi\fP documentation indicated that any number of
|
|
double quotes were skipped after punctuation marks at
|
|
sentence boundaries; however, implementations only skipped single
|
|
quotes. IEEE\ Std\ 1003.1-2001 requires both to be
|
|
skipped.
|
|
.LP
|
|
Historically, the first and last characters in the edit buffer were
|
|
word boundaries. This historical practice is required by
|
|
IEEE\ Std\ 1003.1-2001.
|
|
.LP
|
|
Historically, \fIvi\fP attempted to update the minimum number of columns
|
|
on the screen possible, which could lead to misleading
|
|
information being displayed. IEEE\ Std\ 1003.1-2001 makes no requirements
|
|
other than that the current character being
|
|
entered is displayed correctly, leaving all other decisions in this
|
|
area up to the implementation.
|
|
.LP
|
|
Historically, lines were arbitrarily folded between columns of any
|
|
characters that required multiple column positions on the
|
|
screen, with the exception of tabs, which terminated at the right-hand
|
|
margin. IEEE\ Std\ 1003.1-2001 permits the former
|
|
and requires the latter. Implementations that do not arbitrarily break
|
|
lines between columns of characters that occupy multiple
|
|
column positions should not permit the cursor to rest on a column
|
|
that does not contain any part of a character.
|
|
.LP
|
|
The historical \fIvi\fP had a problem in that all movements were by
|
|
buffer lines, not by display or screen lines. This is often
|
|
the right thing to do; for example, single line movements, such as
|
|
\fBj\fP or \fBk\fP, should work on buffer lines. Commands like
|
|
\fBdj\fP, or \fBj.\fP, where \fB.\fP is a change command, only make
|
|
sense for buffer lines. It is not, however, the right thing
|
|
to do for screen motion or scrolling commands like <control>-D, <control>-F,
|
|
and \fBH\fP. If the window is fairly
|
|
small, using buffer lines in these cases can result in completely
|
|
random motion; for example, \fB1\fP <control>-D can result
|
|
in a completely changed screen, without any overlap. This is clearly
|
|
not what the user wanted. The problem is even worse in the
|
|
case of the \fBH\fP, \fBL\fP, and \fBM\fP commands-as they position
|
|
the cursor at the first non- <blank> of the line, they
|
|
may all refer to the same location in large lines, and will result
|
|
in no movement at all.
|
|
.LP
|
|
In addition, if the line is larger than the screen, using buffer lines
|
|
can make it impossible to display parts of the line-there
|
|
are not any commands that do not display the beginning of the line
|
|
in historical \fIvi\fP, and if both the beginning and end of
|
|
the line cannot be on the screen at the same time, the user suffers.
|
|
Finally, the page and half-page scrolling commands
|
|
historically moved to the first non- <blank> in the new line. If the
|
|
line is approximately the same size as the screen, this
|
|
is inadequate because the cursor before and after a <control>-D command
|
|
will refer to the same location on the screen.
|
|
.LP
|
|
Implementations of \fIex\fP and \fIvi\fP exist that do not have these
|
|
problems because the
|
|
relevant commands ( <control>-B, <control>-D, <control>-F, <control>-U,
|
|
<control>-Y,
|
|
<control>-E, \fBH\fP, \fBL\fP, and \fBM)\fP operate on display (screen)
|
|
lines, not (edit) buffer lines.
|
|
.LP
|
|
IEEE\ Std\ 1003.1-2001 does not permit this behavior by default because
|
|
the standard developers believed that users
|
|
would find it too confusing. However, historical practice has been
|
|
relaxed. For example, \fIex\fP and \fIvi\fP historically attempted,
|
|
albeit sometimes unsuccessfully, to never put part of a
|
|
line on the last lines of a screen; for example, if a line would not
|
|
fit in its entirety, no part of the line was displayed, and
|
|
the screen lines corresponding to the line contained single \fB'@'\fP
|
|
characters. This behavior is permitted, but not required
|
|
by IEEE\ Std\ 1003.1-2001, so that it is possible for implementations
|
|
to support long lines in small screens more
|
|
reasonably without changing the commands to be oriented to the display
|
|
(instead of oriented to the buffer).
|
|
IEEE\ Std\ 1003.1-2001 also permits implementations to refuse to edit
|
|
any edit buffer containing a line that will not fit
|
|
on the screen in its entirety.
|
|
.LP
|
|
The display area (for example, the value of the \fBwindow\fP edit
|
|
option) has historically been "grown", or expanded, to
|
|
display new text when local movements are done in displays where the
|
|
number of lines displayed is less than the maximum possible.
|
|
Expansion has historically been the first choice, when the target
|
|
line is less than the maximum possible expansion value away.
|
|
Scrolling has historically been the next choice, done when the target
|
|
line is less than half a display away, and otherwise, the
|
|
screen was redrawn. There were exceptions, however, in that \fIex\fP
|
|
commands generally always
|
|
caused the screen to be redrawn. IEEE\ Std\ 1003.1-2001 does not specify
|
|
a standard behavior because there may be external
|
|
issues, such as connection speed, the number of characters necessary
|
|
to redraw as opposed to scroll, or terminal capabilities that
|
|
implementations will have to accommodate.
|
|
.LP
|
|
The current line in IEEE\ Std\ 1003.1-2001 maps one-to-one to a buffer
|
|
line in the file. The current column does not.
|
|
There are two different column values that are described by IEEE\ Std\ 1003.1-2001.
|
|
The first is the current column value
|
|
as set by many of the \fIvi\fP commands. This value is remembered
|
|
for the lifetime of the editor. The second column value is the
|
|
actual position on the screen where the cursor rests. The two are
|
|
not always the same. For example, when the cursor is backed by a
|
|
multi-column character, the actual cursor position on the screen has
|
|
historically been the last column of the character in command
|
|
mode, and the first column of the character in input mode.
|
|
.LP
|
|
Commands that set the current line, but that do not set the current
|
|
cursor value (for example, \fBj\fP and \fBk\fP) attempt to
|
|
get as close as possible to the remembered column position, so that
|
|
the cursor tends to restrict itself to a vertical column as the
|
|
user moves around in the edit buffer. IEEE\ Std\ 1003.1-2001 requires
|
|
conformance to historical practice, requiring that
|
|
the display location of the cursor on the display line be adjusted
|
|
from the current column value as necessary to support this
|
|
historical behavior.
|
|
.LP
|
|
Historically, only a single line (and for some terminals, a single
|
|
line minus 1 column) of characters could be entered by the
|
|
user for the line-oriented commands; that is, \fB:\fP, \fB!\fP, \fB/\fP,
|
|
or \fB?\fP. IEEE\ Std\ 1003.1-2001 permits,
|
|
but does not require, this limitation.
|
|
.LP
|
|
Historically, "soft" errors in \fIvi\fP caused the terminal to be
|
|
alerted, but no error message was displayed. As a general
|
|
rule, no error message was displayed for errors in command execution
|
|
in \fIvi\fP, when the error resulted from the user attempting
|
|
an invalid or impossible action, or when a searched-for object was
|
|
not found. Examples of soft errors included \fBh\fP at the left
|
|
margin, <control>-B or \fB[[\fP at the beginning of the file, \fB2G\fP
|
|
at the end of the file, and so on. In addition,
|
|
errors such as \fB%\fP, \fB]]\fP, \fB}\fP, \fB)\fP, \fBN\fP, \fBn\fP,
|
|
\fBf\fP, \fBF\fP, \fBt\fP, and \fBT\fP failing to
|
|
find the searched-for object were soft as well. Less consistently,
|
|
\fB/\fP and \fB?\fP displayed an error message if the pattern
|
|
was not found, \fB/\fP, \fB?\fP, \fBN\fP, and \fBn\fP displayed an
|
|
error message if no previous regular expression had been
|
|
specified, and \fB;\fP did not display an error message if no previous
|
|
\fBf\fP, \fBF\fP, \fBt\fP, or \fBT\fP command had
|
|
occurred. Also, behavior in this area might reasonably be based on
|
|
a runtime evaluation of the speed of a network connection.
|
|
Finally, some implementations have provided error messages for soft
|
|
errors in order to assist naive users, based on the value of a
|
|
verbose edit option. IEEE\ Std\ 1003.1-2001 does not list specific
|
|
errors for which an error message shall be displayed.
|
|
Implementations should conform to historical practice in the absence
|
|
of any strong reason to diverge.
|
|
.SS Page Backwards
|
|
.LP
|
|
The <control>-B and <control>-F commands historically considered it
|
|
an error to attempt to page past the beginning
|
|
or end of the file, whereas the <control>-D and <control>-U commands
|
|
simply moved to the beginning or end of the file.
|
|
For consistency, IEEE\ Std\ 1003.1-2001 requires the latter behavior
|
|
for all four commands. All four commands still
|
|
consider it an error if the current line is at the beginning ( <control>-B,
|
|
<control>-U) or end ( <control>-F,
|
|
<control>-D) of the file. Historically, the <control>-B and <control>-F
|
|
commands skip two lines in order to
|
|
include overlapping lines when a single command is entered. This makes
|
|
less sense in the presence of a \fIcount\fP, as there will
|
|
be, by definition, no overlapping lines. The actual calculation used
|
|
by historical implementations of the \fIvi\fP editor for
|
|
<control>-B was:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB((current first line) - count x (window edit option)) +2
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
and for <control>-F was:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB((current first line) + count x (window edit option)) -2
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
This calculation does not work well when intermixing commands with
|
|
and without counts; for example, \fB3\fP <control>-F
|
|
is not equivalent to entering the <control>-F command three times,
|
|
and is not reversible by entering the <control>-B
|
|
command three times. For consistency with other \fIvi\fP commands
|
|
that take counts, IEEE\ Std\ 1003.1-2001 requires a
|
|
different calculation.
|
|
.SS Scroll Forward
|
|
.LP
|
|
The 4BSD and System V implementations of \fIvi\fP differed on the
|
|
initial value used by the \fBscroll\fP command. 4BSD
|
|
used:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB((window edit option) +1) /2
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
while System V used the value of the \fBscroll\fP edit option. The
|
|
System V version is specified by
|
|
IEEE\ Std\ 1003.1-2001 because the standard developers believed that
|
|
it was more intuitive and permitted the user a method
|
|
of setting the scroll value initially without also setting the number
|
|
of lines that are displayed.
|
|
.SS Scroll Forward by Line
|
|
.LP
|
|
Historically, the <control>-E and <control>-Y commands considered
|
|
it an error if the last and first lines,
|
|
respectively, were already on the screen. IEEE\ Std\ 1003.1-2001 requires
|
|
conformance to historical practice. Historically,
|
|
the <control>-E and <control>-Y commands had no effect in open mode.
|
|
For simplicity and consistency of specification,
|
|
IEEE\ Std\ 1003.1-2001 requires that they behave as usual, albeit
|
|
with a single line screen.
|
|
.SS Clear and Redisplay
|
|
.LP
|
|
The historical <control>-L command refreshed the screen exactly as
|
|
it was supposed to be currently displayed, replacing
|
|
any \fB'@'\fP characters for lines that had been deleted but not updated
|
|
on the screen with refreshed \fB'@'\fP characters.
|
|
The intent of the <control>-L command is to refresh when the screen
|
|
has been accidentally overwritten; for example, by a
|
|
\fBwrite\fP command from another user, or modem noise.
|
|
.SS Redraw Screen
|
|
.LP
|
|
The historical <control>-R command redisplayed only when necessary
|
|
to update lines that had been deleted but not updated
|
|
on the screen and that were flagged with \fB'@'\fP characters. There
|
|
is no requirement that the screen be in any way refreshed
|
|
if no lines of this form are currently displayed. IEEE\ Std\ 1003.1-2001
|
|
permits implementations to extend this command to
|
|
refresh lines on the screen flagged with \fB'@'\fP characters because
|
|
they are too long to be displayed in the current
|
|
framework; however, the current line and column need not be modified.
|
|
.SS Search for tagstring
|
|
.LP
|
|
Historically, the first non- <blank> at or after the cursor was the
|
|
first character, and all subsequent characters that
|
|
were word characters, up to the end of the line, were included. For
|
|
example, with the cursor on the leading space or on the
|
|
\fB'#'\fP character in the text \fB"#bar@"\fP , the tag was \fB"#bar"\fP
|
|
\&. On the character \fB'b'\fP it was
|
|
\fB"bar"\fP , and on the \fB'a'\fP it was \fB"ar"\fP . IEEE\ Std\ 1003.1-2001
|
|
requires this behavior.
|
|
.SS Replace Text with Results from Shell Command
|
|
.LP
|
|
Historically, the \fB<\fP, \fB>\fP, and \fB!\fP commands considered
|
|
most cursor motions other than line-oriented
|
|
motions an error; for example, the command \fB>/foo<CR>\fP succeeded,
|
|
while the command \fB>l\fP failed, even though
|
|
the text region described by the two commands might be identical.
|
|
For consistency, all three commands only consider entire lines
|
|
and not partial lines, and the region is defined as any line that
|
|
contains a character that was specified by the motion.
|
|
.SS Move to Matching Character
|
|
.LP
|
|
Other matching characters have been left implementation-defined in
|
|
order to allow extensions such as matching \fB'<'\fP
|
|
and \fB'>'\fP for searching HTML, or \fB#ifdef\fP, \fB#else\fP, and
|
|
\fB#endif\fP for searching C source.
|
|
.SS Repeat Substitution
|
|
.LP
|
|
IEEE\ Std\ 1003.1-2001 requires that any \fBc\fP and \fBg\fP flags
|
|
specified to the previous substitute command be
|
|
ignored; however, the \fBr\fP flag may still apply, if supported by
|
|
the implementation.
|
|
.SS Return to Previous (Context or Section)
|
|
.LP
|
|
The \fB[[\fP, \fB]]\fP, \fB(\fP, \fB)\fP, \fB{\fP, and \fB}\fP commands
|
|
are all affected by "section boundaries", but in
|
|
some historical implementations not all of the commands recognize
|
|
the same section boundaries. This is a bug, not a feature, and a
|
|
unique section-boundary algorithm was not described for each command.
|
|
One special case that is preserved is that the sentence
|
|
command moves to the end of the last line of the edit buffer while
|
|
the other commands go to the beginning, in order to preserve the
|
|
traditional character cut semantics of the sentence command. Historically,
|
|
\fIvi\fP section boundaries at the beginning and end of
|
|
the edit buffer were the first non- <blank> on the first and last
|
|
lines of the edit buffer if one exists; otherwise, the last
|
|
character of the first and last lines of the edit buffer if one exists.
|
|
To increase consistency with other section locations, this
|
|
has been simplified by IEEE\ Std\ 1003.1-2001 to the first character
|
|
of the first and last lines of the edit buffer, or the
|
|
first and the last lines of the edit buffer if they are empty.
|
|
.LP
|
|
Sentence boundaries were problematic in the historical \fIvi\fP. They
|
|
were not only the boundaries as defined for the section
|
|
and paragraph commands, but they were the first non- <blank> that
|
|
occurred after those boundaries, as well. Historically, the
|
|
\fIvi\fP section commands were documented as taking an optional window
|
|
size as a \fIcount\fP preceding the command. This was not
|
|
implemented in historical versions, so IEEE\ Std\ 1003.1-2001 requires
|
|
that the \fIcount\fP repeat the command, for
|
|
consistency with other \fIvi\fP commands.
|
|
.SS Repeat
|
|
.LP
|
|
Historically, mapped commands other than text input commands could
|
|
not be repeated using the \fBperiod\fP command.
|
|
IEEE\ Std\ 1003.1-2001 requires conformance to historical practice.
|
|
.LP
|
|
The restrictions on the interpretation of special characters (for
|
|
example, <control>-H) in the repetition of text input
|
|
mode commands is intended to match historical practice. For example,
|
|
given the input sequence:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBiab<control>-H<control>-H<control>-Hdef<escape>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
the user should be informed of an error when the sequence is first
|
|
entered, but not during a command repetition. The character
|
|
<control>-T is specifically exempted from this restriction. Historical
|
|
implementations of \fIvi\fP ignored <control>-T
|
|
characters that were input in the original command during command
|
|
repetition. IEEE\ Std\ 1003.1-2001 prohibits this
|
|
behavior.
|
|
.SS Find Regular Expression
|
|
.LP
|
|
Historically, commands did not affect the line searched to or from
|
|
if the motion command was a search ( \fB/\fP, \fB?\fP,
|
|
\fBN\fP, \fBn\fP) and the final position was the start/end of the
|
|
line. There were some special cases and \fIvi\fP was not
|
|
consistent. IEEE\ Std\ 1003.1-2001 does not permit this behavior,
|
|
for consistency. Historical implementations permitted but
|
|
were unable to handle searches as motion commands that wrapped (that
|
|
is, due to the edit option \fBwrapscan\fP) to the original
|
|
location. IEEE\ Std\ 1003.1-2001 requires that this behavior be treated
|
|
as an error.
|
|
.LP
|
|
Historically, the syntax \fB"/RE/0"\fP was used to force the command
|
|
to cut text in line mode. IEEE\ Std\ 1003.1-2001
|
|
requires conformance to historical practice.
|
|
.LP
|
|
Historically, in open mode, a \fBz\fP specified to a search command
|
|
redisplayed the current line instead of displaying the
|
|
current screen with the current line highlighted. For consistency
|
|
and simplicity of specification, IEEE\ Std\ 1003.1-2001
|
|
does not permit this behavior.
|
|
.LP
|
|
Historically, trailing \fBz\fP commands were permitted and ignored
|
|
if entered as part of a search used as a motion command. For
|
|
consistency and simplicity of specification, IEEE\ Std\ 1003.1-2001
|
|
does not permit this behavior.
|
|
.SS Execute an ex Command
|
|
.LP
|
|
Historically, \fIvi\fP implementations restricted the commands that
|
|
could be entered on the colon command line (for example,
|
|
\fBappend\fP and \fBchange\fP), and some other commands were known
|
|
to cause them to fail catastrophically. For consistency,
|
|
IEEE\ Std\ 1003.1-2001 does not permit these restrictions. When executing
|
|
an \fIex\fP
|
|
command by entering \fB:\fP, it is not possible to enter a <newline>
|
|
as part of the command because it is considered the end
|
|
of the command. A different approach is to enter \fIex\fP command
|
|
mode by using the \fIvi\fP
|
|
\fBQ\fP command (and later resuming visual mode with the \fIex\fP
|
|
\fBvi\fP command). In \fIex\fP command mode, the single-line limitation
|
|
does not exist. So, for example, the following
|
|
is valid:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBQ
|
|
s/break here/break\\
|
|
here/
|
|
vi
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
IEEE\ Std\ 1003.1-2001 requires that, if the \fIex\fP command overwrites
|
|
any part of
|
|
the screen that would be erased by a refresh, \fIvi\fP pauses for
|
|
a character from the user. Historically, this character could be
|
|
any character; for example, a character input by the user before the
|
|
message appeared, or even a mapped character. This is probably
|
|
a bug, but implementations that have tried to be more rigorous by
|
|
requiring that the user enter a specific character, or that the
|
|
user enter a character after the message was displayed, have been
|
|
forced by user indignation back into historical behavior.
|
|
IEEE\ Std\ 1003.1-2001 requires conformance to historical practice.
|
|
.SS Shift Left (Right)
|
|
.LP
|
|
Refer to the Rationale for the \fB!\fP and \fB/\fP commands. Historically,
|
|
the \fB<\fP and \fB>\fP commands sometimes
|
|
moved the cursor to the first non- <blank> (for example if the command
|
|
was repeated or with \fB_\fP as the motion command),
|
|
and sometimes left it unchanged. IEEE\ Std\ 1003.1-2001 does not permit
|
|
this inconsistency, requiring instead that the
|
|
cursor always move to the first non- <blank>. Historically, the \fB<\fP
|
|
and \fB>\fP commands did not support buffer
|
|
arguments, although some implementations allow the specification of
|
|
an optional buffer. This behavior is neither required nor
|
|
disallowed by IEEE\ Std\ 1003.1-2001.
|
|
.SS Execute
|
|
.LP
|
|
Historically, buffers could execute other buffers, and loops, infinite
|
|
and otherwise, were possible.
|
|
IEEE\ Std\ 1003.1-2001 requires conformance to historical practice.
|
|
The * \fIbuffer\fP syntax of \fIex\fP is not required in \fIvi\fP,
|
|
because it is not historical practice and has been used in some
|
|
\fIvi\fP implementations to support additional scripting languages.
|
|
.SS Reverse Case
|
|
.LP
|
|
Historically, the \fB~\fP command ignored any associated \fIcount\fP,
|
|
and acted only on the characters in the current
|
|
line. For consistency with other \fIvi\fP commands, IEEE\ Std\ 1003.1-2001
|
|
requires that an associated \fIcount\fP act on
|
|
the next \fIcount\fP characters, and that the command move to subsequent
|
|
lines if warranted by \fIcount\fP, to make it possible
|
|
to modify large pieces of text in a reasonably efficient manner. There
|
|
exist \fIvi\fP implementations that optionally require an
|
|
associated motion command for the \fB~\fP command. Implementations
|
|
supporting this functionality are encouraged to base it on
|
|
the \fBtildedop\fP edit option and handle the text regions and cursor
|
|
positioning identically to the \fByank\fP command.
|
|
.SS Append
|
|
.LP
|
|
Historically, \fIcount\fPs specified to the \fBA\fP, \fBa\fP, \fBI\fP,
|
|
and \fBi\fP commands repeated the input of the first
|
|
line \fIcount\fP times, and did not repeat the subsequent lines of
|
|
the input text. IEEE\ Std\ 1003.1-2001 requires that
|
|
the entire text input be repeated \fIcount\fP times.
|
|
.SS Move Backward to Preceding Word
|
|
.LP
|
|
Historically, \fIvi\fP became confused if word commands were used
|
|
as motion commands in empty files.
|
|
IEEE\ Std\ 1003.1-2001 requires that this be an error. Historical
|
|
implementations of \fIvi\fP had a large number of bugs
|
|
in the word movement commands, and they varied greatly in behavior
|
|
in the presence of empty lines, "words" made up of a single
|
|
character, and lines containing only <blank>s. For consistency and
|
|
simplicity of specification,
|
|
IEEE\ Std\ 1003.1-2001 does not permit this behavior.
|
|
.SS Change to End-of-Line
|
|
.LP
|
|
Some historical implementations of the \fBC\fP command did not behave
|
|
as described by IEEE\ Std\ 1003.1-2001 when the
|
|
\fB$\fP key was remapped because they were implemented by pushing
|
|
the \fB$\fP key onto the input queue and reprocessing it.
|
|
IEEE\ Std\ 1003.1-2001 does not permit this behavior. Historically,
|
|
the \fBC\fP, \fBS\fP, and \fBs\fP commands did not
|
|
copy replaced text into the numeric buffers. For consistency and simplicity
|
|
of specification, IEEE\ Std\ 1003.1-2001
|
|
requires that they behave like their respective \fBc\fP commands in
|
|
all respects.
|
|
.SS Delete
|
|
.LP
|
|
Historically, lines in open mode that were deleted were scrolled up,
|
|
and an \fB@\fP glyph written over the beginning of the
|
|
line. In the case of terminals that are incapable of the necessary
|
|
cursor motions, the editor erased the deleted line from the
|
|
screen. IEEE\ Std\ 1003.1-2001 requires conformance to historical
|
|
practice; that is, if the terminal cannot display the
|
|
\fB'@'\fP character, the line cannot remain on the screen.
|
|
.SS Delete to End-of-Line
|
|
.LP
|
|
Some historical implementations of the \fBD\fP command did not behave
|
|
as described by IEEE\ Std\ 1003.1-2001 when the
|
|
\fB$\fP key was remapped because they were implemented by pushing
|
|
the \fB$\fP key onto the input queue and reprocessing it.
|
|
IEEE\ Std\ 1003.1-2001 does not permit this behavior.
|
|
.SS Join
|
|
.LP
|
|
An historical oddity of \fIvi\fP is that the commands \fBJ\fP, \fB1J\fP,
|
|
and \fB2J\fP are all equivalent.
|
|
IEEE\ Std\ 1003.1-2001 requires conformance to historical practice.
|
|
The \fIvi\fP \fBJ\fP command is specified in terms of
|
|
the \fIex\fP \fBjoin\fP command with an \fIex\fP command
|
|
\fIcount\fP value. The address correction for a \fIcount\fP that is
|
|
past the end of the edit buffer is necessary for historical
|
|
compatibility for both \fIex\fP and \fIvi\fP.
|
|
.SS Mark Position
|
|
.LP
|
|
Historical practice is that only lowercase letters, plus \fB'`'\fP
|
|
and \fB'"\fP , could be used to mark a cursor
|
|
position. IEEE\ Std\ 1003.1-2001 requires conformance to historical
|
|
practice, but encourages implementations to support
|
|
other characters as marks as well.
|
|
.SS Repeat Regular Expression Find (Forward and Reverse)
|
|
.LP
|
|
Historically, the \fBN\fP and \fBn\fP commands could not be used as
|
|
motion components for the \fBc\fP command. With the
|
|
exception of the \fBcN\fP command, which worked if the search crossed
|
|
a line boundary, the text region would be discarded, and the
|
|
user would not be in text input mode. For consistency and simplicity
|
|
of specification, IEEE\ Std\ 1003.1-2001 does not
|
|
permit this behavior.
|
|
.SS Insert Empty Line (Below and Above)
|
|
.LP
|
|
Historically, counts to the \fBO\fP and \fBo\fP commands were used
|
|
as the number of physical lines to open, if the terminal
|
|
was dumb and the \fBslowopen\fP option was not set. This was intended
|
|
to minimize traffic over slow connections and repainting for
|
|
dumb terminals. IEEE\ Std\ 1003.1-2001 does not permit this behavior,
|
|
requiring that a \fIcount\fP to the open command
|
|
behave as for other text input commands. This change to historical
|
|
practice was made for consistency, and because a superset of the
|
|
functionality is provided by the \fBslowopen\fP edit option.
|
|
.SS Put from Buffer (Following and Before)
|
|
.LP
|
|
Historically, \fIcount\fPs to the \fBp\fP and \fBP\fP commands were
|
|
ignored if the buffer was a line mode buffer, but were
|
|
(mostly) implemented as described in IEEE\ Std\ 1003.1-2001 if the
|
|
buffer was a character mode buffer. Because
|
|
implementations exist that do not have this limitation, and because
|
|
pasting lines multiple times is generally useful,
|
|
IEEE\ Std\ 1003.1-2001 requires that \fIcount\fP be supported for
|
|
all \fBp\fP and \fBP\fP commands.
|
|
.LP
|
|
Historical implementations of \fIvi\fP were widely known to have major
|
|
problems in the \fBp\fP and \fBP\fP commands,
|
|
particularly when unusual regions of text were copied into the edit
|
|
buffer. The standard developers viewed these as bugs, and they
|
|
are not permitted for consistency and simplicity of specification.
|
|
.LP
|
|
Historically, a \fBP\fP or \fBp\fP command (or an \fIex\fP \fBput\fP
|
|
command executed
|
|
from open or visual mode) executed in an empty file, left an empty
|
|
line as the first line of the file. For consistency and
|
|
simplicity of specification, IEEE\ Std\ 1003.1-2001 does not permit
|
|
this behavior.
|
|
.SS Replace Character
|
|
.LP
|
|
Historically, the \fBr\fP command did not correctly handle the \fIerase\fP
|
|
and \fIword erase\fP characters as arguments, nor
|
|
did it handle an associated \fIcount\fP greater than 1 with a <carriage-return>
|
|
argument, for which it replaced \fIcount\fP
|
|
characters with a single <newline>. IEEE\ Std\ 1003.1-2001 does not
|
|
permit these inconsistencies.
|
|
.LP
|
|
Historically, the \fBr\fP command permitted the <control>-V escaping
|
|
of entered characters, such as <ESC> and the
|
|
<carriage-return>; however, it required two leading <control>-V characters
|
|
instead of one.
|
|
IEEE\ Std\ 1003.1-2001 requires that this be changed for consistency
|
|
with the other text input commands of \fIvi\fP.
|
|
.LP
|
|
Historically, it is an error to enter the \fBr\fP command if there
|
|
are less than \fIcount\fP characters at or after the cursor
|
|
in the line. While a reasonable and unambiguous extension would be
|
|
to permit the \fBr\fP command on empty lines, it would require
|
|
that too large a \fIcount\fP be adjusted to match the number of characters
|
|
at or after the cursor for consistency, which is
|
|
sufficiently different from historical practice to be avoided. IEEE\ Std\ 1003.1-2001
|
|
requires conformance to historical
|
|
practice.
|
|
.SS Replace Characters
|
|
.LP
|
|
Historically, if there were \fBautoindent\fP characters in the line
|
|
on which the \fBR\fP command was run, and
|
|
\fBautoindent\fP was set, the first <newline> would be properly indented
|
|
and no characters would be replaced by the
|
|
<newline>. Each additional <newline> would replace \fIn\fP characters,
|
|
where \fIn\fP was the number of characters
|
|
that were needed to indent the rest of the line to the proper indentation
|
|
level. This behavior is a bug and is not permitted by
|
|
IEEE\ Std\ 1003.1-2001.
|
|
.SS Undo
|
|
.LP
|
|
Historical practice for cursor positioning after undoing commands
|
|
was mixed. In most cases, when undoing commands that affected
|
|
a single line, the cursor was moved to the start of added or changed
|
|
text, or immediately after deleted text. However, if the user
|
|
had moved from the line being changed, the column was either set to
|
|
the first non- <blank>, returned to the origin of the
|
|
command, or remained unchanged. When undoing commands that affected
|
|
multiple lines or entire lines, the cursor was moved to the
|
|
first character in the first line restored. As an example of how inconsistent
|
|
this was, a search, followed by an \fBo\fP text
|
|
input command, followed by an \fBundo\fP would return the cursor to
|
|
the location where the \fBo\fP command was entered, but a
|
|
\fBcw\fP command followed by an \fBo\fP command followed by an \fBundo\fP
|
|
would return the cursor to the first non-
|
|
<blank> of the line. IEEE\ Std\ 1003.1-2001 requires the most useful
|
|
of these behaviors, and discards the least
|
|
useful, in the interest of consistency and simplicity of specification.
|
|
.SS Yank
|
|
.LP
|
|
Historically, the \fByank\fP command did not move to the end of the
|
|
motion if the motion was in the forward direction. It moved
|
|
to the end of the motion if the motion was in the backward direction,
|
|
except for the \fB_\fP command, or for the \fBG\fP and
|
|
\fB'\fP commands when the end of the motion was on the current line.
|
|
This was further complicated by the fact that for a number of
|
|
motion commands, the \fByank\fP command moved the cursor but did not
|
|
update the screen; for example, a subsequent command would
|
|
move the cursor from the end of the motion, even though the cursor
|
|
on the screen had not reflected the cursor movement for the
|
|
\fByank\fP command. IEEE\ Std\ 1003.1-2001 requires that all \fByank\fP
|
|
commands associated with backward motions move
|
|
the cursor to the end of the motion for consistency, and specifically,
|
|
to make \fB'\fP commands as motions consistent with search
|
|
patterns as motions.
|
|
.SS Yank Current Line
|
|
.LP
|
|
Some historical implementations of the \fBY\fP command did not behave
|
|
as described by IEEE\ Std\ 1003.1-2001 when the
|
|
\fB'_'\fP key was remapped because they were implemented by pushing
|
|
the \fB'_'\fP key onto the input queue and reprocessing
|
|
it. IEEE\ Std\ 1003.1-2001 does not permit this behavior.
|
|
.SS Redraw Window
|
|
.LP
|
|
Historically, the \fBz\fP command always redrew the screen. This is
|
|
permitted but not required by
|
|
IEEE\ Std\ 1003.1-2001, because of the frequent use of the \fBz\fP
|
|
command in macros such as \fBmap n nz.\fP for screen
|
|
positioning, instead of its use to change the screen size. The standard
|
|
developers believed that expanding or scrolling the screen
|
|
offered a better interface for users. The ability to redraw the screen
|
|
is preserved if the optional new window size is specified,
|
|
and in the <control>-L and <control>-R commands.
|
|
.LP
|
|
The semantics of \fBz^\fP are confusing at best. Historical practice
|
|
is that the screen before the screen that ended with the
|
|
specified line is displayed. IEEE\ Std\ 1003.1-2001 requires conformance
|
|
to historical practice.
|
|
.LP
|
|
Historically, the \fBz\fP command would not display a partial line
|
|
at the top or bottom of the screen. If the partial line
|
|
would normally have been displayed at the bottom of the screen, the
|
|
command worked, but the partial line was replaced with
|
|
\fB'@'\fP characters. If the partial line would normally have been
|
|
displayed at the top of the screen, the command would fail.
|
|
For consistency and simplicity of specification, IEEE\ Std\ 1003.1-2001
|
|
does not permit this behavior.
|
|
.LP
|
|
Historically, the \fBz\fP command with a line specification of 1 ignored
|
|
the command. For consistency and simplicity of
|
|
specification, IEEE\ Std\ 1003.1-2001 does not permit this behavior.
|
|
.LP
|
|
Historically, the \fBz\fP command did not set the cursor column to
|
|
the first non- <blank> for the character if the first
|
|
screen was to be displayed, and was already displayed. For consistency
|
|
and simplicity of specification,
|
|
IEEE\ Std\ 1003.1-2001 does not permit this behavior.
|
|
.SS Input Mode Commands in vi
|
|
.LP
|
|
Historical implementations of \fIvi\fP did not permit the user to
|
|
erase more than a single line of input, or to use normal
|
|
erase characters such as \fIline erase\fP, \fIworderase\fP, and \fIerase\fP
|
|
to erase \fBautoindent\fP characters. As there
|
|
exist implementations of \fIvi\fP that do not have these limitations,
|
|
both behaviors are permitted, but only historical practice
|
|
is required. In the case of these extensions, \fIvi\fP is required
|
|
to pause at the \fBautoindent\fP and previous line
|
|
boundaries.
|
|
.LP
|
|
Historical implementations of \fIvi\fP updated only the portion of
|
|
the screen where the current cursor character was displayed.
|
|
For example, consider the \fIvi\fP input keystrokes:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBiabcd<escape>0C<tab>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
Historically, the <tab> would overwrite the characters \fB"abcd"\fP
|
|
when it was displayed. Other implementations
|
|
replace only the \fB'a'\fP character with the <tab>, and then push
|
|
the rest of the characters ahead of the cursor. Both
|
|
implementations have problems. The historical implementation is probably
|
|
visually nicer for the above example; however, for the
|
|
keystrokes:
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fBiabcd<ESC>0R<tab><ESC>
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.LP
|
|
the historical implementation results in the string \fB"bcd"\fP disappearing
|
|
and then magically reappearing when the
|
|
<ESC> character is entered. IEEE\ Std\ 1003.1-2001 requires the former
|
|
behavior when overwriting erase-columns-that
|
|
is, overwriting characters that are no longer logically part of the
|
|
edit buffer-and the latter behavior otherwise.
|
|
.LP
|
|
Historical implementations of \fIvi\fP discarded the <control>-D and
|
|
<control>-T characters when they were entered
|
|
at places where their command functionality was not appropriate. IEEE\ Std\ 1003.1-2001
|
|
requires that the <control>-T
|
|
functionality always be available, and that <control>-D be treated
|
|
as any other key when not operating on \fBautoindent\fP
|
|
characters.
|
|
.SS NUL
|
|
.LP
|
|
Some historical implementations of \fIvi\fP limited the number of
|
|
characters entered using the NUL input character to 256
|
|
bytes. IEEE\ Std\ 1003.1-2001 permits this limitation; however, implementations
|
|
are encouraged to remove this limit.
|
|
.SS <control>-D
|
|
.LP
|
|
See also Rationale for the input mode command <newline>. The hidden
|
|
assumptions in the <control>-D command (and in
|
|
the \fIvi\fP \fBautoindent\fP specification in general) is that <space>s
|
|
take up a single column on the screen and that
|
|
<tab>s are comprised of an integral number of <space>s.
|
|
.SS <newline>
|
|
.LP
|
|
Implementations are permitted to rewrite \fBautoindent\fP characters
|
|
in the line when <newline>, <carriage-return>,
|
|
<control>-D, and <control>-T are entered, or when the \fBshift\fP
|
|
commands are used, because historical
|
|
implementations have both done so and found it necessary to do so.
|
|
For example, a <control>-D when the cursor is preceded by
|
|
a single <tab>, with \fBtabstop\fP set to 8, and \fBshiftwidth\fP
|
|
set to 3, will result in the <tab> being replaced
|
|
by several <space>s.
|
|
.SS <control>-T
|
|
.LP
|
|
See also the Rationale for the input mode command <newline>. Historically,
|
|
<control>-T only worked if no non-
|
|
<blank>s had yet been input in the current input line. In addition,
|
|
the characters inserted by <control>-T were treated
|
|
as \fBautoindent\fP characters, and could not be erased using normal
|
|
user erase characters. Because implementations exist that do
|
|
not have these limitations, and as moving to a column boundary is
|
|
generally useful, IEEE\ Std\ 1003.1-2001 requires that
|
|
both limitations be removed.
|
|
.SS <control>-V
|
|
.LP
|
|
Historically, \fIvi\fP used \fB^V\fP, regardless of the value of the
|
|
literal-next character of the terminal.
|
|
IEEE\ Std\ 1003.1-2001 requires conformance to historical practice.
|
|
.LP
|
|
The uses described for <control>-V can also be accomplished with <control>-Q,
|
|
which is useful on terminals that use
|
|
<control>-V for the down-arrow function. However, most historical
|
|
implementations use <control>-Q for the
|
|
\fItermios\fP START character, so the editor will generally not receive
|
|
the <control>-Q unless \fBstty ixon\fP mode is set
|
|
to off. (In addition, some historical implementations of \fIvi\fP
|
|
explicitly set \fBixon\fP mode to on, so it was difficult for
|
|
the user to set it to off.) Any of the command characters described
|
|
in IEEE\ Std\ 1003.1-2001 can be made ineffective by
|
|
their selection as \fItermios\fP control characters, using the \fIstty\fP
|
|
utility or other
|
|
methods described in the System Interfaces volume of IEEE\ Std\ 1003.1-2001.
|
|
.SS <ESC>
|
|
.LP
|
|
Historically, SIGINT alerted the terminal when used to end input mode.
|
|
This behavior is permitted, but not required, by
|
|
IEEE\ Std\ 1003.1-2001.
|
|
.SH FUTURE DIRECTIONS
|
|
.LP
|
|
None.
|
|
.SH SEE ALSO
|
|
.LP
|
|
\fIed\fP , \fIex\fP , \fIstty\fP
|
|
.SH COPYRIGHT
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
|
event of any discrepancy between this version and the original IEEE and
|
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
|
is the referee document. The original Standard can be obtained online at
|
|
http://www.opengroup.org/unix/online.html .
|