diff options
author | 1996-08-20 22:55:38 +0000 | |
---|---|---|
committer | 1996-08-20 22:55:38 +0000 | |
commit | 24e643d60f02768434d232d00cf0f0dc8844984d (patch) | |
tree | d63aa9838cc39dc5895811f6a14f5870f59abace | |
parent | only close real socket (diff) | |
download | wireguard-openbsd-24e643d60f02768434d232d00cf0f0dc8844984d.tar.xz wireguard-openbsd-24e643d60f02768434d232d00cf0f0dc8844984d.zip |
nvi 1.74
43 files changed, 429 insertions, 8081 deletions
diff --git a/usr.bin/vi/FAQ b/usr.bin/vi/FAQ index dacfb0b536e..79546d184c4 100644 --- a/usr.bin/vi/FAQ +++ b/usr.bin/vi/FAQ @@ -1,4 +1,4 @@ -@(#)FAQ 8.10 (Berkeley) 8/10/96 +@(#)FAQ 8.12 (Berkeley) 8/17/96 Q: How can I get vi to display my character set? A: Vi uses the C library routine isprint(3) to determine if a character @@ -21,6 +21,10 @@ A: Vi uses the C library routine isprint(3) to determine if a character HP-UX 10.X en_US.iso88591 SunOS 4.X iso_8859_1 SunOS 5.X iso_8859_1 + + If there's no other solution, you can use the print and noprint edit + options of vi to specify that a specific character is printable or not + printable. Q: My map won't work! A: One thing that you should immediately check if a vi map doesn't work @@ -95,8 +99,8 @@ A: This is almost certainly a problem with the system's terminfo or Q: The entire screen repaints on every keystroke! A: Your system's curses implementation is broken. You should use the - curses implementation provided with vi or a curses replacment such as - ncurses. Eric Raymond is one of the maintainers of the freely + curses implementation provided with vi or a curses replacement such + as ncurses. Eric Raymond is one of the maintainers of the freely redistributable ncurses package. You can download ncurses from http://www.ccil.org/~esr/ncurses.html, or you can contact him at esr@snark.thyrsus.com. diff --git a/usr.bin/vi/COPYRIGHT b/usr.bin/vi/LICENSE index 46d800c80c3..0ef3f3e3954 100644 --- a/usr.bin/vi/COPYRIGHT +++ b/usr.bin/vi/LICENSE @@ -1,8 +1,6 @@ /*- * Copyright (c) 1991, 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 - * Keith Bostic. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -19,16 +17,6 @@ * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. - * 5. The editor's :version command and the message it displays may not be - * altered in any way, without the written permission of Keith Bostic, - * other than to add supplemental information to the version's release - * number and release date. For permission to change the :version command - * or its message, contact Keith Bostic: - * - * Keith Bostic +1-508-287-4781 - * 394 E. Riding Dr. bostic@bostic.com - * Carlisle, MA 01741 - * USA * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE @@ -42,3 +30,25 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + +/* + * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 + * Keith Bostic. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following message. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following message in the + * documentation and/or other materials provided with the distribution. + * 3. For permission to redistribute this program under conditions other + * than these, contact Keith Bostic. + * + * The vi program is shareware. You are welcome to copy, modify and share + * it with others under the conditions listed in the LICENSE file. If your + * company finds vi sufficiently useful that you would have purchased it, + * or your company wishes to redistribute it, contributions to the authors + * would be appreciated. + */ diff --git a/usr.bin/vi/README b/usr.bin/vi/README index 2cb77083a3c..1664e11629d 100644 --- a/usr.bin/vi/README +++ b/usr.bin/vi/README @@ -1,29 +1,29 @@ -# @(#)README 8.143 (Berkeley) 7/9/96 +# @(#)README 8.146 (Berkeley) 8/18/96 -This is the README for nex/nvi, a freely redistributable replacement for -the ex/vi text editors originally distributed as part of the Fourth +This is the README for nex/nvi, a freely redistributable implementation +of the ex/vi text editors originally distributed as part of the Fourth Berkeley Software Distribution (4BSD), by the University of California, Berkeley. The source code for nex/nvi can be retrieved by using anonymous ftp to -ftp.cs.berkeley.edu. The files ucb/4bsd/nvi.tar.Z and ucb/4bsd/nvi.tar.gz -are the compressed and gzip'd archives, respectively, of version 1.71 of -nex/nvi. This version is believed to be stable and reasonably problem -free. The file ucb/4bsd/nvi.ALPHA.###.tar.gz is a gzip'd archive of the -current alpha-test release of nex/nvi. This version reflects the current -development tree, and is more likely to have unanticipated problems. +ftp.cs.berkeley.edu. The file ucb/4bsd/nvi.tar.gz is the gzip'd archive, +of version 1.71 of nex/nvi. This version is believed to be stable and +problem free. The file ucb/4bsd/nvi-###.ALPHA.tar.gz is a gzip'd archive +of the current alpha-test release of nex/nvi. This version reflects the +current development tree, and will be more likely to have problems. -See the file build/README for information on building nvi. +See the file: + build/README for information on building nvi. + LAYOUT for a description of where everything is. + LICENSE for the copyright and redistribution terms. -See the file LAYOUT for a description of where everything is. +If you have any questions about nex/nvi, problems with it, or concerns +about the conditions for redistribution, please contact me: -See the file COPYRIGHT for the nex/nvi copyright and redistribution terms. - -If you have any questions about nex/nvi, or problems making it work, -please contact me by electronic mail at one of the following addresses: - - uunet!bostic - bostic@cs.berkeley.edu + Keith Bostic +1-508-287-4781 + 394 E. Riding Dr. bostic@bostic.com + Carlisle, MA 01741 + USA Keith Bostic @@ -46,8 +46,10 @@ o This software is several years old and is the product of many folks' work. Sven Verdoolaege added the Perl5 interpreter. -o Many, many people provided enhancements, bug reports and testing, far too - many to individually thank. + Rob Mayoff provided the original Cscope support. + +o Many, many people suggested enhancements, and provided bug reports and + testing, far too many to individually thank. o From the original vi acknowledgements, by William Joy and Mark Horton: @@ -67,7 +69,7 @@ o Status: This software is in beta test, and it's pretty stable. Almost all of the historic functionality in ex/vi is there, the only major missing pieces -are open mode and the lisp option. +are open mode and the lisp edit option. Nvi is largely 8-bit clean. This isn't difficult to fix, and was left in during initial development to keep things simple. Wide character support @@ -87,7 +89,7 @@ reproduce the bug, and I'll try to fix it locally. Stack traces of core dumps are only rarely helpful -- an example file with a set of keystrokes that causes the problem is almost invariably necessary. I know it's annoying, but simply playing with the bug until you can reproduce it at -will with minimal keystrokes is immensely helpful to me. +will, with minimal keystrokes, is immensely helpful to me. Please include the following in the bug report; diff --git a/usr.bin/vi/USD.doc/vi.ref/Makefile b/usr.bin/vi/USD.doc/vi.ref/Makefile deleted file mode 100644 index 80c3fe5011f..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -# @(#)Makefile 8.16 (Berkeley) 8/15/94 - -DIR= usd/13.viref -SRCS= vi.ref ex.cmd.roff set.opt.roff vi.cmd.roff ref.so -EXTRA= merge.awk spell.ok -MACROS= -me -CLEANFILES+=vi.ref.txt index index.so - -paper.ps: vi.ref index.so - soelim vi.ref | ${TBL} | ${ROFF} > ${.TARGET} - -vi.ref.txt: vi.ref index.so - soelim vi.ref | ${TBL} | groff ${MACROS} -Tascii > $@ - -index.so: vi.ref - # Build index.so, side-effect of building the paper. - soelim vi.ref | ${TBL} | ${ROFF} > /dev/null - sed -e 's/MINUSSIGN/\\-/' \ - -e 's/DOUBLEQUOTE/""/' \ - -e "s/SQUOTE/'/" \ - -e 's/ /__SPACE/g' < index | \ - sort -u '-t ' +0 -1 +1n | awk -f merge.awk | \ - sed -e 's/__SPACE/ /g' > index.so - rm -f index - -.include <bsd.doc.mk> diff --git a/usr.bin/vi/USD.doc/vi.ref/ex.cmd.roff b/usr.bin/vi/USD.doc/vi.ref/ex.cmd.roff deleted file mode 100644 index a9cba6ae336..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/ex.cmd.roff +++ /dev/null @@ -1,1776 +0,0 @@ -.\" Copyright (c) 1994 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)ex.cmd.roff 8.24 (Berkeley) 7/17/94 -.\" -.SH 1 "Ex Description" -.pp -The following words have special meanings for -.CO ex -commands. -.KY "<eof>" -.IP "<eof>" -The end-of-file character is used to scroll the screen in the -.CO ex -editor. -This character is normally -.LI <control-D> , -however, whatever character is set for the current terminal is used. -.KY "line" -.IP "line" -A single-line address, given in any of the forms described in the -section entitled -.QB "Ex Addressing" . -The default for -.LI line -is the current line. -.KY "range" -.IP "range" -A line, or a pair of line addresses, separated by a comma or semicolon. -(See the section entitled -.QB "Ex Addressing" -for more information.) -The default for range is the current line -.i only , -i.e. -.QT \&.,. . -A percent sign -.PQ % -stands for the range -.QT 1,$ . -The starting address must be less than, or equal to, the ending address. -.KY "count" -.IP "count" -A positive integer, specifying the number of lines to be affected by -the command; the default is 1. -Generally, a count past the end-of-file may be specified, e.g. the -command -.QT "p 3000" -in a 10 line file is acceptable, and will print from the current line -through the last line in the file. -.KY "flags" -.IP "flags" -One or more of the characters -.QQ # , -.QQ p , -and -.QQ l . -When a command that accepts these flags completes, the addressed line(s) -are written out as if by the corresponding -.CO # , -.CO l -or -.CO p -commands. -In addition, any number of -.QT + -or -.QT \- -characters can be specified before, after, or during the flags, in which -case the line written is not necessarily the one affected by the command, -but rather the line addressed by the offset address specified. -The default for -.LI flags -is none. -.KY "file" -.IP "file" -A pattern used to derive a pathname; the default is the current file. -File names are subjected to normal -.XR sh 1 -word expansions. -.pp -Anywhere a file name is specified, it is also possible to use -the special string -.QT /tmp . -This will be replaced with a temporary file name which can be used -for temporary work, e.g. -.QT ":e /tmp" -creates and edits a new file. -.pp -If both a count and a range are specified for commands that use either, -the starting line for the command is the -.i last -line addressed by the range, and -.LI count - 1 -subsequent lines are affected by the command, e.g. the command -.QT 2,3p4 -prints out lines 3, 4, 5 and 6. -.pp -When only a line or range is specified, with no command, the implied -command is either a -.CO list , -.CO number -or -.CO print -command. -The command used is the most recent of the three commands to have been -used (including any use as a flag). -If none of these commands have been used before, the -.CO print -command is the implied command. -When no range or count is specified and the command line is a blank line, -the current line is incremented by 1 and then the current line is displayed. -.pp -Zero or more whitespace characters may precede or follow the addresses, -count, flags, or command name. -Any object following a command name (such as buffer, file, etc.), -that begins with an alphabetic character, -should be separated from the command name by at least one whitespace -character. -.pp -Any character, including -.LI <carriage-return> , -.QT % -and -.QT # -retain their literal value when preceded by a backslash. -.SH 1 "Ex Commands" -.pp -The following section describes the commands available in the -.CO ex -editor. -In each entry below, the tag line is a usage synopsis for the command. -.pp -Each command can be entered as the abbreviation -(those characters in the synopsis command word preceding the -.QQ [ -character), -the full command (all characters shown for the command word, -omitting the -.QQ [ -and -.QQ ] -characters), -or any leading subset of the full command down to the abbreviation. -For example, the args command (shown as -.QT ar[gs] -in the synopsis) -can be entered as -.QT ar , -.QT arg -or -.QT args . -.pp -Each -.CO ex -command described below notes the new current line after it -is executed, as well as any options that affect the command. -.KY DOUBLEQUOTE -.IP """" -A comment. -Command lines beginning with the double-quote character -.PQ """" -are ignored. -This permits comments in editor scripts and startup files. -.KY "<end-of-file>" -.IP "<end-of-file>" -Scroll the screen. -Write the next N lines, where N is the value of the -.OP scroll -option. -The command is the end-of-file terminal character, which may be -different on different terminals. -Traditionally, it is the -.LI <control-D> -key. -.sp -Historically, the -.CO eof -command ignored any preceding count, and the -.LI <end-of-file> -character was ignored unless it was entered as the first character -of the command. -This implementation treats it as a command -.i only -if entered as the first character of the command line, and otherwise -treats it as any other character. -.SS -.SP Line: -Set to the last line written. -.SP Options: -None. -.SE -.KY "!" -.IP "! argument(s)" -.Ip "[range]! argument(s)" -Execute a shell command, or filter lines through a shell command. -In the first synopsis, the remainder of the line after the -.QT ! -character is passed to the program named by the -.OP shell -option, as a single argument. -.sp -Within the rest of the line, -.QT % -and -.QT # -are expanded into the current and alternate pathnames, respectively. -The character -.QT ! -is expanded with the command text of the previous -.CO ! -command. -(Therefore, the command -.CO !! -repeats the previous -.CO ! -command.) -The special meanings of -.QT % , -.QT # , -and -.QT ! -can be overridden by escaping them with a backslash. -If no -.CO ! -or -.CO :! -command has yet been executed, it is an error to use an unescaped -.QT ! -character. -The -.CO ! -command does -.i not -do shell expansion on the strings provided as arguments. -If any of the above expansions change the command the user entered, -the command is redisplayed at the bottom of the screen. -.sp -.CO Ex -then executes the program named by the -.OP shell -option, with a -.b \-c -flag followed by the arguments (which are bundled into a single argument). -.sp -The -.CO ! -command is permitted in an empty file. -.sp -If the file has been modified since it was last completely written, -the -.Co ! -command will warn you. -.sp -A single -.QT ! -character is displayed when the command completes. -.sp -In the second form of the -.CO ! -command, the remainder of the line after the -.QT ! -is passed to the program named by the -.OP shell -option, as described above. -The specified lines are passed to the program as standard input, -and the standard and standard error output of the program replace -the original lines. -.SS -.SP Line: -Unchanged if no range was specified, otherwise set to the first -line of the range. -.SP Options: -Affected by the -.OP autowrite -and -.OP writeany -options. -.SE -.KY "number" -.IP "[range] nu[mber] [count] [flags]" -.KY "#" -.Ip "[range] # [count] [flags]" -Display the selected lines, each preceded with its line number. -.sp -The line number format is -.QQ %6d , -followed by two spaces. -.SS -.SP Line: -Set to the last line displayed. -.SP Options: -None. -.SE -.KY "@" -.IP "@ buffer" -.KY "*" -.Ip "* buffer" -Execute a buffer. -Each line in the named buffer is executed as an -.CO ex -command. -If no buffer is specified, or if the specified buffer is -.QT @ -or -.QT * , -the last buffer executed is used. -.KY < -.IP "[range] <[< ...] [count] [flags]" -Shift lines left or right. -The specified lines are shifted to the left (for the -.CO < -command) or right (for the -.CO > -command), by the number of columns specified by the -.OP shiftwidth -option. -Only leading whitespace characters are deleted when shifting left; -once the first column of the line contains a nonblank character, -the -.CO shift -command will succeed, but the line will not be modified. -.sp -If the command character -.CO < -or -.CO > -is repeated more than once, the command is repeated once for each -additional command character. -.SS -.SP Line: -If the current line is set to one of the lines that are affected -by the command, it is unchanged. -Otherwise, it is set to the first nonblank character of the lowest -numbered line shifted. -.SP Options: -Affected by the -.OP shiftwidth -option. -.SE -.KY = -.IP "[line] = [flags]" -Display the line number. -Display the line number of -.LI line -(which defaults to the last line in the file). -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY > -.IP "[range] >[> ...] [count] [flags]" -Shift right. -The specified lines are shifted to the right by the number of columns -specified by the -.OP shiftwidth -option, by inserting tab and space characters. -Empty lines are not changed. -.sp -If the command character -.QT > -is repeated more than once, the command is repeated once for each -additional command character. -.SS -.SP Line: -Set to the last line modified by the command. -.SP Options: -None. -.SE -.KY abbrev -.IP "ab[brev] lhs rhs" -Add an abbreviation to the current abbreviation list. -In -.CO vi , -if -.LI lhs -is entered such that it is preceded and followed by characters -that cannot be part of a word, it is replaced by the string -.LI rhs . -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY append -.IP "[line] a[ppend][!]" -The input text is appended to the specified line. -If line 0 is specified, the text is inserted at the beginning of the file. -Set to the last line input. -If no lines are input, then set to -.LI line , -or to the first line of the file if a -.LI line -of 0 was specified. -Following the command name with a -.QT ! -character causes the -.OP autoindent -option to be toggled for the duration of the command. -.SS -.SP Line: -Unchanged. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY args -.IP "ar[gs]" -Display the argument list. -The current argument is displayed inside of -.QT [ -and -.QT ] -characters. -The argument list is the list of operands specified on startup, -which can be replaced using the -.CO next -command. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY bg -.IP bg -.CO Vi -mode only. -Background the current screen. -.SS -.SP Line: -Set to the current line when the screen was last edited. -.SP Options: -None. -.SE -.KY change -.IP "[range] c[hange][!] [count]" -Replace the lines with input text. -Following the command name with a -.QT ! -character causes the -.OP autoindent -option to be toggled for the duration of the command. -.SS -.SP Line: -Set to the last line input, or, if no lines were input, -set to the line before the target line, or to the first -line of the file if there are no lines preceding the target line. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY cd -.KY chdir -.IP "chd[ir][!] [directory]" -.Ip "cd[!] [directory]" -Change the current working directory. -The -.LI directory -argument is subjected to -.XR sh 1 -word expansions. -When invoked with no directory argument and the -.LI HOME -environment variable is set, the directory named by the -.LI HOME -environment variable becomes the new current directory. -Otherwise, the new current directory becomes the directory returned -by the -.XR getpwent 3 -routine. -.sp -The -.CO chdir -command will fail if the file has been modified since the last complete -write of the file. -You can override this check by appending a -.QT ! -character to the command. -.SS -.SP Line: -Unchanged. -.SP Options: -Affected by the -.OP cdpath -option. -.SE -.KY copy -.KY t -.IP "[range] co[py] line [flags]" -.Ip "[range] t line [flags]" -Copy the specified lines (range) after the destination line. -Line 0 may be specified to insert the lines at the beginning of -the file. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY delete -.IP "[range] d[elete] [buffer] [count] [flags]" -Delete the lines from the file. -The deleted text is saved in the specified buffer, or, if no buffer -is specified, in the unnamed buffer. -If the command name is followed by a letter that could be interpreted -as either a buffer name or a flag value (because neither a -.LI count -or -.LI flags -values were given), -.CO ex -treats the letter as a -.LI flags -value if the letter immediately follows the command name, -without any whitespace separation. -If the letter is preceded by whitespace characters, -it treats it as a buffer name. -.SS -.SP Line: -Set to the line following the deleted lines, -or to the last line if the deleted lines were at the end. -.SP Options: -None. -.SE -.KY display -.IP "di[splay] b[uffers] | s[creens] | t[ags]" -Display buffers, screens or tags. -The -.CO display -command takes one of three additional arguments, which are as follows: -.SS -.SP b[uffers] -Display all buffers (including named, unnamed, and numeric) -that contain text. -.SP s[creens] -Display the file names of all background screens. -.SP t[ags] -Display the tags stack. -.SE -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY edit -.IP "e[dit][!] [+cmd] [file]" -.Ip "ex[!] [+cmd] [file]" -Edit a different file. -If the current buffer has been modified since the last complete write, -the command will fail. -You can override this by appending a -.QT ! -character to the command name. -.sp -If the -.QT +cmd -option is specified, that -.CO ex -command will be executed in the new file. -Any -.CO ex -command may be used, although the most common use of this feature is -to specify a line number or search pattern to set the initial location -in the new file. -.SS -.SP Line: -If you have previously edited the file, the current line will be set -to your last position in the file. -If that position does not exist, or you have not previously edited the -file, the current line will be set to the first line of the file if -you are in -.CO vi -mode, and the last line of the file if you are in -.CO ex . -.SP Options: -Affected by the -.OP autowrite -and -.OP writeany -options. -.SE -.KY exusage -.IP "exu[sage] [command]" -Display usage for an -.CO ex -command. -If -.LI command -is specified, a usage statement for that command is displayed. -Otherwise, usage statements for all -.CO ex -commands are displayed. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY file -.IP "f[ile] [file]" -Display and optionally change the file name. -If a file name is specified, the current pathname is changed to the -specified name. -The current pathname, the number of lines, and the current position -in the file are displayed. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY fg -.IP "fg [name]" -.CO Vi -mode only. -Foreground the specified screen. -Swap the current screen with the specified backgrounded screen. -If no screen is specified, the first background screen is foregrounded. -.SS -.SP Line: -Set to the current line when the screen was last edited. -.SP Options: -None. -.SE -.KY global -.IP "[range] g[lobal] /pattern/ [commands]" -.KY v -.Ip "[range] v /pattern/ [commands]" -Apply commands to lines matching (or not matching) a pattern. -The lines within the given range that match -.PQ g[lobal] , -or do not match -.PQ v -the given pattern are selected. -Then, the specified -.CO ex -command(s) are executed with the current line -.PQ \&. -set to each selected line. -If no range is specified, the entire file is searched for matching, -or not matching, lines. -.sp -Multiple commands can be specified, one per line, by escaping each -.LI <newline> -character with a backslash, or by separating commands with a -.QT | -character. -If no commands are specified, the command defaults to the -.CO print -command. -.sp -For the -.CO append , -.CO change -and -.CO insert -commands, the input text must be part of the global command line. -In this case, the terminating period can be omitted if it ends the commands. -.sp -The -.CO visual -command may also be specified as one of the -.CO ex -commands. -In this mode, input is taken from the terminal. -Entering a -.CO Q -command in -.CO vi -mode causes the next line matching the pattern to be selected and -.CO vi -to be reentered, until the list is exhausted. -.sp -The -.CO global , -.CO v -and -.CO undo -commands cannot be used as part of these commands. -.sp -The editor options -.OP autoprint , -.OP autoindent , -and -.OP report -are turned off for the duration of the -.CO global -and -.CO v -commands. -.SS -.SP Line: -The last line modified. -.SP Options: -None. -.SE -.KY help -.IP "he[lp]" -Display a help message. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY insert -.IP "[line] i[nsert][!]" -The input text is inserted before the specified line. -Following the command name with a -.QT ! -character causes the -.OP autoindent -option setting to be toggled for the duration of this command. -.SS -.SP Line: -Set to the last line input; if no lines were input, -set to the line before the target line, or to the first line -of the file if there are no lines preceding the target line. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY join -.IP "[range] j[oin][!] [count] [flags]" -Join lines of text together. -.sp -A -.LI count -specified to the -.Sy join -command specifies that the last line of the -.LI range -plus -.LI count -subsequent lines will be joined. -(Note, this differs by one from the general rule where only -.LI count - 1 -subsequent lines are affected.) -.sp -If the current line ends with a whitespace character, all whitespace -is stripped from the next line. -Otherwise, if the next line starts with a open parenthesis -.PQ ( , -do nothing. -Otherwise, if the current line ends with a question mark -.PQ ? , -period -.PQ \&. -or exclamation point -.PQ ! , -insert two spaces. -Otherwise, insert a single space. -.sp -Appending a -.QT ! -character to the command name causes a simpler join with no -white-space processing. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY list -.IP "[range] l[ist] [count] [flags]" -Display the lines unambiguously. -Tabs are displayed as -.QT ^I , -and the end of the line is marked with a -.QT $ -character. -.SS -.SP Line: -Set to the last line displayed. -.SP Options: -None. -.SE -.KY map -.IP "map[!] [lhs rhs]" -Define or display maps (for -.CO vi -only). -.sp -If -.QT lhs -and -.QT rhs -are not specified, the current set of command mode maps are displayed. -If a -.QT ! -character is appended to to the command, -the text input mode maps are displayed. -.sp -Otherwise, when the -.QT lhs -character sequence is entered in -.CO vi , -the action is as if the corresponding -.QT rhs -had been entered. -If a -.QT ! -character is appended to the command name, -the mapping is effective during text input mode, -otherwise, it is effective during command mode. -This allows -.QT lhs -to have two different macro definitions at the same time: one for command -mode and one for input mode. -.sp -Whitespace characters require escaping with a -.LI <literal next> -character to be entered in the -.LI lhs -string in visual mode. -.sp -Normally, keys in the -.LI rhs -string are remapped (see the -.OP remap -option), -and it is possible to create infinite loops. -However, keys which map to themselves are not further remapped, -regardless of the setting of the -.OP remap -option. -For example, the command -.QT ":map n nz." -maps the -.QT n -key to the -.CO n -and -.CO z -commands. -.sp -To exit an infinitely looping map, use the terminal -.LI <interrupt> -character. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY mark -.KY k -.IP "[line] ma[rk] <character>" -.Ip "[line] k <character>" -Mark the line with the mark -.LI <character> . -The expressions -.QT '<character> -and -.QT `<character> -can then be used as an address in any command that uses one. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY move -.IP "[range] m[ove] line" -Move the specified lines after the target line. -A target line of 0 places the lines at the beginning of the file. -.SS -.SP Line: -Set to the first of the moved lines. -.SP Options: -None. -.SE -.KY mkexrc -.IP "mk[exrc][!] file" -Write the abbreviations, editor options and maps to the specified -file. -Information is written in a form which can later be read back in -using the -.CO ex -.CO source -command. -If -.LI file -already exists, the -.CO mkexrc -command will fail. -This check can be overridden by appending a -.QT ! -character to the command. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY next -.IP "n[ext][!] [file ...]" -Edit the next file from the argument list. -The -.CO next -command will fail if the file has been modified since the last complete -write. -This check can be overridden by appending the -.QT ! -character to the command name. -The argument list can optionally be replaced by specifying a new one -as arguments to this command. -In this case, editing starts with the first file on the new list. -.SS -.SP Line: -Set as described for the -.CO edit -command. -.SP Options: -Affected by the options -.OP autowrite -and -.OP writeany . -.SE -.KY open -.IP "[line] o[pen] /pattern/ [flags]" -Enter open mode. -Open mode is the same as being in -.CO vi , -but with a one-line window. -All the standard -.CO vi -commands are available. -If a match is found for the optional RE argument, -the cursor is set to the start of the matching pattern. -.sp -.i "This command is not yet implemented." -.SS -.SP Line: -Unchanged, unless the optional RE is specified, in which case it is -set to the line where the matching pattern is found. -.SP Options: -Affected by the -.OP open -option. -.SE -.KY preserve -.IP "pre[serve]" -Save the file in a form that can later be recovered using the -.CO ex -.b \-r -option. -When the file is preserved, an email message is sent to the user. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY previous -.IP "prev[ious][!]" -Edit the previous file from the argument list. -The -.CO previous -command will fail if the file has been modified since the last complete -write. -This check can be overridden by appending the -.QT ! -character to the command name. -.SS -.SP Line: -Set as described for the -.CO edit -command. -.SP Options: -Affected by the options -.OP autowrite -and -.OP writeany . -None. -.SE -.KY print -.IP "[range] p[rint] [count] [flags]" -Display the specified lines. -.SS -.SP Line: -Set to the last line displayed. -.SP Options: -None. -.SE -.KY put -.IP "[line] pu[t] [buffer]" -Append buffer contents to the current line. -If a buffer is specified, its contents are appended to the line, -otherwise, the contents of the unnamed buffer are used. -.SS -.SP Line: -Set to the line after the current line. -.SP Options: -None. -.SE -.KY quit -.IP "q[uit][!]" -End the editing session. -If the file has been modified since the last complete write, the -.CO quit -command will fail. -This check may be overridden by appending a -.QT ! -character to the command. -.sp -If there are more files to edit, the -.CO quit -command will fail. -Appending a -.QT ! -character to the command name or entering two -.CO quit -commands (i.e. -.CO wq , -.CO quit , -.CO xit -or -.CO ZZ ) -in a row) will override this check and the editor will exit. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY read -.IP "[line] r[ead][!] [file]" -Read a file. -A copy of the specified file is appended to the line. -If -.LI line -is 0, the copy is inserted at the beginning of the file. -If no file is specified, the current file is read; if there is no -current file, then -.LI file -becomes the current file. -If there is no current file and no -.LI file -is specified, then the -.CO read -command will fail. -.sp -If -.LI file -is preceded by a -.QT ! -character, -.LI file -is treated as if it were a shell command, and passed to the program -named by the -.LI SHELL -environment variable. -The standard and standard error outputs of that command are read into -the file after the specified line. -The special meaning of the -.QT ! -character can be overridden by escaping it with a backslash -.PQ \e -character. -.SS -.SP Line: -When executed from -.CO ex , -the current line is set to the last line read. -When executed from -.CO vi , -the current line is set to the first line read. -.SP Options: -None. -.SE -.KY recover -.IP "rec[over] file" -Recover -.LI file -if it was previously saved. -If no saved file by that name exists, the -.CO recover -command behaves similarly to the -.CO edit -command. -.SS -.SP Line: -Set as described for the -.CO edit -command. -.SP Options: -None. -.SE -.KY resize -.IP "res[ize] [+|-]size" -.CO Vi -mode only. -Grow or shrink the current screen. -If -.LI size -is a positive, signed number, the current screen is grown by that many lines. -If -.LI size -is a negative, signed number, the current screen is shrunk by that many lines. -If -.LI size -is not signed, the current screen is set to the specified -.LI size . -Applicable only to split screens. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY rewind -.IP "rew[ind][!]" -Rewind the argument list. -If the current file has been modified since the last complete write, -the -.CO rewind -command will fail. -This check may be overridden by appending the -.QT ! -character to the command. -.sp -Otherwise, the current file is set to the first file in the argument -list. -.SS -.SP Line: -Set as described for the -.CO edit -command. -.SP Options: -Affected by the -.OP autowrite -and -.OP writeany -options. -.SE -.KY set -.IP "se[t] [option[=[value]] ...] [nooption ...] [option? ...] [all]" -Display or set editor options. -When no arguments are specified, the editor option -.OP term , -and any editor options whose values have been changed from the -default settings are displayed. -If the argument -.LI all -is specified, the values of all of editor options are displayed. -.sp -Specifying an option name followed by the character -.QT ? -causes the current value of that option to be displayed. -The -.QT ? -can be separated from the option name by whitespace characters. -The -.QT ? -is necessary only for Boolean valued options. -Boolean options can be given values by the form -.QT "set option" -to turn them on, or -.QT "set nooption" -to turn them off. -String and numeric options can be assigned by the form -.QT "set option=value" . -Any whitespace characters in strings can be included literally by preceding -each with a backslash. -More than one option can be set or listed by a single set command, -by specifying multiple arguments, each separated from the next by -whitespace characters. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY shell -.IP "sh[ell]" -Run a shell program. -The program named by the -.OP shell -option is run with a -.b \-i -(for interactive) flag. -Editing is resumed when that program exits. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY source -.IP "so[urce] file" -Read and execute -.CO ex -commands from a file. -.CO Source -commands may be nested. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY split -.IP "sp[lit] [file ...]" -.CO Vi -mode only. -Split the screen. -The current screen is split into two screens, of approximately equal size. -If the cursor is in the lower half of the screen, the screen will split -up, i.e. the new screen will be above the old one. -If the cursor is in the upper half of the screen, the new screen will be -below the old one. -.sp -If -.LI file -is specified, the new screen is editing that file, otherwise, both -screens are editing the same file, and changes in each will be -be reflected in the other. -The argument list for the new screen consists of the list of files -specified as arguments to this command, or, the current pathname if -no files are specified. -.SS -.SP Line: -If -.LI file -is specified, set as for the -.CO edit -command, otherwise unchanged. -.SP Options: -None. -.SE -.KY substitute -.IP "[range] s[ubstitute] [/pattern/replace/] [options] [count] [flags]" -.KY & -.Ip "[range] & [options] [count] [flags]" -.KY ~ -.Ip "[range] ~ [options] [count] [flags]" -Make substitutions. -Replace the first instance of -.LI pattern -with the string -.LI replace -on the specified line(s). -If the -.QT /pattern/repl/ -argument is not specified, the -.QT /pattern/repl/ -from the previous -.CO substitute -command is used. -.sp -If -.LI options -includes the letter -.QT c -(confirm), you will be prompted for confirmation before each replacement -is done. -An affirmative response (in English, a -.QT y -character) causes the replacement to be made. -A quit response (in English, a -.QT q -character) causes the -.CO substitute -command to be terminated. -Any other response causes the replacement not to be made, and the -.CO substitute -command continues. -If -.LI options -includes the letter -.QT g -(global), all nonoverlapping instances of -.LI pattern -in the line are replaced. -.sp -The -.CO & -version of the command is the same as not specifying a pattern -or replacement string to the -.CO substitute -command, and the -.QT & -is replaced by the pattern and replacement information from the -previous substitute command. -.sp -The -.CO ~ -version of the command is the same as -.CO & -and -.CO s , -except that the search pattern used is the last RE used in -.i any -command, not necessarily the one used in the last -.CO substitute -command. -.sp -For example, in the sequence -.ft C -.(b -s/red/blue/ -/green -~ -.)b -.ft R -the -.QT ~ -is equivalent to -.QT s/green/blue/ . -.sp -The -.CO substitute -command may be interrupted, using the terminal interrupt character. -All substitutions completed before the interrupt are retained. -.SS -.SP Line: -Set to the last line upon which a substitution was made. -.SP Options: -None. -.SE -.KY suspend -.IP "su[spend][!]" -.KY stop -.Ip "st[op][!]" -.KY <control-Z> -.Ip <control-Z> -Suspend the edit session. -Appending a -.QT ! -character to these commands turns off the -.OP autowrite -option for the command. -.SS -.SP Line: -Unchanged. -.SP Options: -Affected by the -.OP autowrite -option. -.SE -.KY tag -.IP "ta[g][!] tagstring" -Edit the file containing the specified tag. -Search for the tagstring, which can be in a different file. -If the tag is in a different file, then the new file is edited. -If the current file has been modified since the last complete write, -the -.CO tag -command will fail. -This check can be overridden by appending the -.QT ! -character to the command name. -.sp -The -.CO tag -command searches for -.LI tagstring -in the tags file(s) specified by the -.Op tags -option. -(See -.XR ctags 1 -for more information on tags files.) -.SS -.SP Line: -Set to the line indicated by the tag. -.SP Options: -Affected by the -.OP autowrite , -.OP taglength , -.OP tags -and -.OP writeany -options. -.SE -.KY tagpop -.IP "tagp[op][!] [file | number]" -Pop to the specified tag in the tags stack. -If neither -.LI file -or -.LI number -is specified, the -.CO tagpop -command pops to the most recent entry on the tags stack. -If -.LI file -or -.LI number -is specified, the -.CO tagpop -command pops to the most recent entry in the tags stack for that file, -or numbered entry in the tags stack, respectively. -(See the -.CO display -command for information on displaying the tags stack.) -.sp -If the file has been modified since the last complete write, the -.CO tagpop -command will fail. -This check may be overridden by appending a -.QT ! -character to the command name. -.SS -.SP Line: -Set to the line indicated by the tag. -.SP Options: -Affected by the -.OP autowrite , -and -.OP writeany -options. -.SE -.KY tagtop -.IP "tagt[op][!]" -Pop to the least recent tag on the tags stack, clearing the tags stack. -.sp -If the file has been modified since the last complete write, the -.CO tagpop -command will fail. -This check may be overridden by appending a -.QT ! -character to the command name. -.SS -.SP Line: -Set to the line indicated by the tag. -.SP Options: -Affected by the -.OP autowrite , -and -.OP writeany -options. -.SE -.KY unabbrev -.IP "una[bbrev] lhs" -Delete an abbreviation. -Delete -.LI lhs -from the current list of abbreviations. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY undo -.IP "u[ndo]" -Undo the last change made to the file. -Changes made by -.CO global , -.CO v , -.CO visual -and map sequences are considered a single command. -If repeated, the -.CO u -command alternates between these two states, and is its own inverse. -.SS -.SP Line: -Set to the last line modified by the command. -.SP Options: -None. -.SE -.KY unmap -.IP "unm[ap][!] lhs" -Unmap a mapped string. -Delete the command mode map definition for -.LI lhs . -If a -.QT ! -character is appended to the command name, delete the text input mode -map definition instead. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY version -.IP "ve[rsion]" -Display the version of the -.CO ex/vi -editor. -.KY visual -.IP "[line] vi[sual] [type] [count] [flags]" -.CO Ex -mode only. -Enter -.CO vi . -The -.LI type -is optional, and can be -.QT \- , -.QT + -or -.QT ^ , -as in the -.CO ex -.CO z -command, to specify the the position of the specified line in the screen -window. -(The default is to place the line at the top of the screen window.) -A -.LI count -specifies the number of lines that will initially be displayed. -(The default is the value of the -.OP window -editor option.) -.SS -.SP Line: -Unchanged unless -.LI line -is specified, in which case it is set to that line. -.SP Options: -None. -.SE -.KY visual -.IP "vi[sual][!] [+cmd] [file]" -.CO Vi -mode only. -Edit a new file. -Identical to the -.QT "edit[!] [+cmd] [file]" -command. -.KY viusage -.IP "viu[sage] [command]" -Display usage for a -.CO vi -command. -If -.LI command -is specified, a usage statement for that command is displayed. -Otherwise, usage statements for all -.CO vi -commands are displayed. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY write -.IP "[range] w[rite][!] [>>] [file]" -.Ip "[range] w[rite] [!] [file]" -.KY wn -.Ip "[range] wn[!] [>>] [file]" -.KY wq -.Ip "[range] wq[!] [>>] [file]" -Write the file. -The specified lines (the entire file, if no range is given) is written -to -.LI file . -If -.LI file -is not specified, the current pathname is used. -If -.LI file -is specified, and it exists, or if the current pathname was set using the -.CO file -command, and the file already exists, these commands will fail. -Appending a -.QT ! -character to the command name will override this check and the write -will be attempted, regardless. -.sp -Specifying the optional -.QT >> -string will cause the write to be appended to the file, in which case -no tests are made for the file already existing. -.sp -If the file is preceded by a -.QT ! -character, the program named in the SHELL environment variable is -invoked with file as its second argument, and the specified lines -are passed as standard input to that command. -The -.QT ! -in this usage must be separated from command name by at least one -whitespace character. -The special meaning of the -.QT ! -may be overridden by escaping it with a backslash -.PQ \e -character. -.sp -The -.CO wq -version of the write command will exit the editor after writing the file, -if there are no further files to edit. -Appending a -.QT ! -character to the command name or entering two -.QQ quit -commands (i.e. -.CO wq , -.CO quit , -.CO xit -or -.CO ZZ ) -in a row) will override this check and the editor will exit, -ignoring any files that have not yet been edited. -.sp -The -.CO wn -version of the write command will move to the next file after writing -the file, unless the write fails. -.SS -.SP Line: -Unchanged. -.SP Options: -Affected by the -.OP readonly -and -.OP writeany -options. -.SE -.KY xit -.IP "[range] x[it][!] [file]" -Write the file if it has been modified. -The specified lines are written to -.LI file , -if the file has been modified since the last complete write to any -file. -If no -.LI range -is specified, the entire file is written. -.sp -The -.CO xit -command will exit the editor after writing the file, -if there are no further files to edit. -Appending a -.QT ! -character to the command name or entering two -.QQ quit -commands (i.e. -.CO wq , -.CO quit , -.CO xit -or -.CO ZZ ) -in a row) will override this check and the editor will exit, -ignoring any files that have not yet been edited. -.SS -.SP Line: -Unchanged. -.SP Options: -Affected by the -.OP readonly -and -.OP writeany -options. -.SE -.KY yank -.IP "[range] ya[nk] [buffer] [count]" -Copy the specified lines to a buffer. -If no buffer is specified, the unnamed buffer is used. -.SS -.SP Line: -Unchanged. -.SP Options: -None. -.SE -.KY z -.IP "[line] z [type] [count] [flags]" -Adjust the window. -If no -.LI type -is specified, then -.LI count -lines following the specified line are displayed. -The default -.LI count -is the value of the -.OP window -option. -The -.LI type -argument changes the position at which -.LI line -is displayed on the screen by changing the number of lines -displayed before and after -.LI line . -The following -.LI type -characters may be used: -.SS -.SP \- -Place the line at the bottom of the screen. -.SP + -Place the line at the top of the screen. -.SP \&. -Place the line in the middle of the screen. -.SP ^ -Write out count lines starting -.LI "count * 2" -lines before -.LI line ; -the net effect of this is that a -.QT z^ -command following a -.CO z -command writes the previous page. -.SP = -Center -.LI line -on the screen with a line of hyphens displayed immediately before and -after it. -The number of preceding and following lines of text displayed are -reduced to account for those lines. -.SE -.SS -.SP Line: -Set to the last line displayed, with the exception of the -.Dq Li \&= -.LI type , -where the current line is set to the line specified by the command. -.SP Options: -Affected by the -.Sy window -option. -.SE diff --git a/usr.bin/vi/USD.doc/vi.ref/merge.awk b/usr.bin/vi/USD.doc/vi.ref/merge.awk deleted file mode 100644 index 16b51520a77..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/merge.awk +++ /dev/null @@ -1,16 +0,0 @@ -# @(#)merge.awk 8.3 (Berkeley) 5/26/94 -# -# merge index entries into one line per label -$1 == prev { - printf ", %s", $2; - next; -} -{ - if (NR != 1) - printf "\n"; - printf "%s \t%s", $1, $2; - prev = $1; -} -END { - printf "\n" -} diff --git a/usr.bin/vi/USD.doc/vi.ref/ref.so b/usr.bin/vi/USD.doc/vi.ref/ref.so deleted file mode 100644 index c0fddc3f6c7..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/ref.so +++ /dev/null @@ -1,127 +0,0 @@ -.\" Copyright (c) 1994 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)ref.so 8.6 (Berkeley) 7/15/94 -.\" -.\" -.\" indented paragraph, with spaces between the items, bold font -.de IP -.\".tm arg 1 \\$1 arg 2 \\$2 arg 3 \\$3 -.sp 1 -.nr PS \\n(ps -.nr ps 0 -.ip "\fB\\$1\fP" \\$2 -.nr ps \\n(PS -.br -.. -.\" indented paragraph, no spaces between the items, bold font -.de Ip -.\".tm arg 1 \\$1 arg 2 \\$2 arg 3 \\$3 -.nr PS \\n(ps -.nr ps 0 -.ns -.ip "\fB\\$1\fP" \\$2 -.nr ps \\n(PS -.br -.. -.\" start nested .IP -.de SS -.sp -.ba +5n -.. -.\" end nested .IP -.de SE -.ba -5n -.. -.\" nested .IP, no spaces, normal font -.de SP -.\".tm arg 1 \\$1 arg 2 \\$2 arg 3 \\$3 -.nr PS \\n(ps -.nr ps 0 -.ns -.ip "\\$1" 9n -.nr ps \\n(PS -.. -.\" typewriter font -.de LI -\&\fC\\$1\fP\\$2 -.. -.\" ex/vi names in command font -.de EV -\&\fB\\$1\fP/\fB\\$2\fP\\$3 -.. -.\" command names -.de CO -\&\fB\\$1\fP\\$2 -.. -.\" key words for index -.de KY -.sy echo >>index '\\$1 \\n%' -.. -.\" option names -.de OP -\&\fB\\$1\fP\\$2 -.. -.\" paren quoted (typewriter font) -.de PQ -(\*(lq\fC\\$1\fP\*(rq)\\$2 -.. -.\" quoted bold -.de QB -\*(lq\fB\\$1\fP\*(rq\\$2 -.. -.\" quoted command -.de QC -\*(lq\fB\\$1\fP\*(rq\\$2 -.. -.\" quoted option -.de QO -\*(lq\fB\\$1\fP\*(rq\\$2 -.. -.\" quoted (no font change) -.de QQ -\*(lq\\$1\*(rq\\$2 -.. -.\" quoted (typewriter font) -.de QT -\*(lq\fC\\$1\fP\*(rq\\$2 -.. -.\" section macro to build TOC -.de SH -.(x -\\$2 -.)x -.sh \\$1 "\\$2" -.. -.\" manual section -.de XR -\&\fI\\$1\fP(\\$2)\\$3 -.. diff --git a/usr.bin/vi/USD.doc/vi.ref/set.opt.roff b/usr.bin/vi/USD.doc/vi.ref/set.opt.roff deleted file mode 100644 index d59599d1426..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/set.opt.roff +++ /dev/null @@ -1,949 +0,0 @@ -.\" Copyright (c) 1994 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)set.opt.roff 8.26 (Berkeley) 8/11/94 -.\" -.SH 1 "Set Options" -.pp -There are a large number of options that may be set (or unset) to -change the editor's behavior. -This section describes the options, their abbreviations and their -default values. -.pp -In each entry below, the first part of the tag line is the full name -of the option, followed by any equivalent abbreviations. -(Regardless of the abbreviations, it is only necessary to use the -minimum number of characters necessary to distinguish an abbreviation -from all other commands for it to be accepted, in -.EV nex nvi . -Historically, only the full name and the official abbreviations -were accepted by -.EV ex vi . -Using full names in your startup files and environmental variables will -probably make them more portable.) -The part in square brackets is the default value of the option. -Most of the options are boolean, i.e. they are either on or off, -and do not have an associated value. -.pp -Options apply to both -.CO ex -and -.CO vi -modes, unless otherwise specified. -.pp -For information on modifying the options or to display the options and -their current values, see the -.QQ set -command in the section entitled -.QB "Ex Commands" . -.KY altwerase -.IP "altwerase [off]" -.CO Vi -only. -Change how -.CO vi -does word erase during text input. -When this option is set, text is broken up into three classes: -alphabetic, numeric and underscore characters, other nonblank -characters, and blank characters. -Changing from one class to another marks the end of a word. -In addition, the class of the first character erased is ignored -(which is exactly what you want when erasing pathname components). -.KY autoindent -.IP "autoindent, ai [off]" -If this option is set, whenever you create a new line (using the -.CO vi -.CO A , -.CO a , -.CO C , -.CO c , -.CO I , -.CO i , -.CO O , -.CO o , -.CO R , -.CO r , -.CO S , -and -.CO s -commands, or the -.CO ex -.CO append , -.CO change , -and -.CO insert -commands) the new line is automatically indented to align the cursor with -the first nonblank character of the line from which you created it. -Lines are indented using tab characters to the extent possible (based on -the value of the -.OP tabstop -option) and then using space characters as necessary. -For commands inserting text into the middle of a line, any blank characters -to the right of the cursor are discarded, and the first nonblank character -to the right of the cursor is aligned as described above. -.sp -The indent characters are themselves somewhat special. -If you do not enter more characters on the new line before moving to -another line, or entering -.LI <escape> , -the indent character will be deleted and the line will be empty. -For example, if you enter -.LI <carriage-return> -twice in succession, -the line created by the first -.LI <carriage-return> -will not have any characters in it, -regardless of the indentation of the previous or subsequent line. -.sp -Indent characters also require that you enter additional erase characters -to delete them. -For example, -if you have an indented line, containing only blanks, the first -.LI <word-erase> -character you enter will erase up to end of the indent characters, -and the second will erase back to the beginning of the line. -(Historically, only the -.CO <control-D> -key would erase the indent characters. -Both the -.CO <control-D> -key and the usual erase keys work in -.CO nvi .) -In addition, if the cursor is positioned at the end of the indent -characters, the keys -.QT 0<control-D> -will erase all of the indent characters for the current line, -resetting the indentation level to 0. -Similarly, the keys -.QT ^<control-D> -will erase all of the indent characters for the current line, -leaving the indentation level for future created lines unaffected. -.sp -Finally, if the -.OP autoindent -option is set, the -.CO S -and -.CO cc -commands change from the first nonblank of the line to the end of the -line, instead of from the beginning of the line to the end of the line. -.KY autoprint -.IP "autoprint, ap [off]" -.CO Ex -only. -Cause the current line to be automatically displayed after the -.CO ex -commands -.CO < , -.CO > , -.CO copy , -.CO delete , -.CO join , -.CO move , -.CO put , -.CO t , -.CO Undo , -and -.CO undo . -This automatic display is suppressed during -.CO global -and -.CO vglobal -commands, and for any command where optional flags are used to explicitly -display the line. -.KY autowrite -.IP "autowrite, aw [off]" -If this option is set, the -.CO vi -.CO ! , -.CO ^^ , -.CO ^] -and -.CO <control-Z> -commands, and the -.CO ex -.CO edit , -.CO next , -.CO rewind , -.CO stop , -.CO suspend , -.CO tag , -.CO tagpop , -and -.CO tagtop -commands automatically write the current file back to the current file name -if it has been modified since it was last written. -If the write fails, the command fails and goes no further. -.sp -Appending the optional force flag character -.QT ! -to the -.CO ex -commands -.CO next , -.CO rewind , -.CO stop , -.CO suspend , -.CO tag , -.CO tagpop , -and -.CO tagtop -stops the automatic write from being attempted. -.sp -(Historically, the -.CO next -command ignored the optional force flag.) -Note, the -.CO ex -commands -.CO edit , -.CO quit , -.CO shell , -and -.CO xit -are -.i not -affected by the -.OP autowrite -option. -.KY beautify -.IP "beautify, bf [off]" -If this option is set, all control characters that are not currently being -specially interpreted, other than -.LI <tab> , -.LI <newline> , -and -.LI <form-feed> , -are -discarded from commands read in by -.CO ex -from command files, and from input text entered to -.CO vi -(either into the file or to the colon command line). -Text files read by -.EV ex vi -are -.i not -affected by the -.OP beautify -option. -.KY cdpath -.IP "cdpath [environment variable CDPATH, or current directory]" -This option is used to specify a colon separated list of directories -which are used as path prefixes for any relative path names used as -arguments for the -.CO cd -command. -The value of this option defaults to the value of the environmental -variable -.LI CDPATH -if it is set, otherwise to the current directory. -For compatibility with the POSIX 1003.2 shell, the -.CO cd -command does -.i not -check the current directory as a path prefix for relative path names -unless it is explicitly specified. -It may be so specified by entering an empty string or a -.QT \&. -character into the -.LI CDPATH -variable or the option value. -.KY columns -.IP "columns, co [80]" -The number of columns in the screen. -Setting this option causes -.EV ex vi -to set (or reset) the environmental variable -.LI COLUMNS . -See the section entitled -.QB "Sizing the Screen" -more information. -.KY comment -.IP "comment [off]" -.CO Vi -only. -If the first non-empty line of the file begins with the string -.QT /\&* , -this option causes -.CO vi -to skip to the end of that C-language comment (probably a terribly boring -legal notice) before displaying the file. -.KY directory -.IP "directory, dir [environment variable TMPDIR, or /tmp]" -The directory where temporary files are created. -The environmental variable -.LI TMPDIR -is used as the default value if it exists, otherwise -.LI /tmp -is used. -.KY edcompatible -.IP "edcompatible, ed [off]" -Remember the values of the -.QQ c -and -.QQ g -suffices to the -.CO substitute -commands, instead of initializing them as unset for each new -command. -Specifying pattern and replacement strings to the -.CO substitute -command unsets the -.QQ c -and -.QQ g -suffices as well. -.KY errorbells -.IP "errorbells, eb [off]" -.CO Ex -only. -.CO Ex -error messages are normally presented in inverse video. -If that is not possible for the terminal, setting this option causes -error messages to be announced by ringing the terminal bell. -.KY exrc -.IP "exrc, ex [off]" -If this option is turned off in the system or $HOME startup files, -the local startup files are never read (unless they are the same -as the system or $HOME startup files). -Turning it on has no effect, i.e. the normal checks for local startup -files are performed, regardless. -See the section entitled -.QB "Startup Information" -for more information. -.KY extended -.IP "extended [off]" -This option causes all regular expressions to be treated as POSIX -1003.2 Extended Regular Expressions (which are similar to historic -.XR egrep 1 -style expressions). -.KY flash -.IP "flash [on]" -This option causes the screen to flash instead of beeping the keyboard, -on error, if the terminal has the capability. -.KY hardtabs -.IP "hardtabs, ht [8]" -This option defines the spacing between hardware tab settings, i.e. -the tab expansion done by the operating system and/or the terminal -itself. -As -.EV nex nvi -never writes -.LI <tab> -characters to the terminal, unlike historic versions of -.EV ex vi , -this option does not currently have any affect. -.KY ignorecase -.IP "ignorecase, ic [off]" -This option causes regular expressions, both in -.CO ex -commands and in searches, -to be evaluated in a case-insensitive manner. -.KY keytime -.IP "keytime [6]" -The 10th's of a second -.EV ex vi -waits for a subsequent key to complete a key mapping. -.KY leftright -.IP "leftright [off]" -.CO Vi -only. -This option causes the screen to be scrolled left-right to view -lines longer than the screen, instead of the traditional -.CO vi -screen interface which folds long lines at the right-hand margin -of the terminal. -.KY lines -.IP "lines, li [24]" -.CO Vi -only. -The number of lines in the screen. -Setting this option causes -.EV ex vi -to set (or reset) the environmental variable -.LI LINES . -See the section entitled -.QB "Sizing the Screen" -for more information. -.KY lisp -.IP "lisp [off]" -.CO Vi -only. -This option changes the behavior of the -.CO vi -.CO ( , -.CO ) , -.CO { , -.CO } , -.CO [[ -and -.CO ]] -commands to match the Lisp language. -Also, the -.OP autoindent -option's behavior is changed to be appropriate for Lisp. -.sp -.i "This option is not yet implemented." -.KY list -.IP "list [off]" -This option causes lines to be displayed in an unambiguous fashion. -Specifically, tabs are displayed as control characters, i.e. -.QT ^I , -and the ends of lines are marked with a -.QT $ -character. -.KY magic -.IP "magic [on]" -This option is on by default. -Turning the -.OP magic -option off causes all regular expression characters except for -.QT ^ -and -.QT $ , -to be treated as ordinary characters. -To re-enable characters individually, when the -.OP magic -option is off, -precede them with a backslash -.QT \e -character. -See the section entitled -.QB "Regular Expressions and Replacement Strings" -for more information. -.KY matchtime -.IP "matchtime [7]" -.CO Vi -only. -The 10th's of a second -.EV ex vi -pauses on the matching character when the -.OP showmatch -option is set. -.KY mesg -.IP "mesg [on]" -This option allows other users to contact you using the -.XR talk 1 -and -.XR write 1 -utilities, while you are editing. -.EV Ex vi -does not turn message on, i.e. if messages were turned off when the -editor was invoked, they will stay turned off. -This option only permits you to disallow messages for the edit session. -See the -.XR mesg 1 -utility for more information. -.KY modelines -.IP "modelines, modeline [off]" -If the -.OP modelines -option is set, -.EV ex vi -has historically scanned the first and last five lines of each file as -it is read for editing, looking for any -.CO ex -commands that have been placed in those lines. -After the startup information has been processed, and before the user -starts editing the file, any commands embedded in the file are executed. -.sp -Commands were recognized by the letters -.QQ e -or -.QQ v -followed by -.QQ x -or -.QQ i , -at the beginning of a line or following a tab or space character, -and followed by a -.QQ : , -an -.CO ex -command, and another -.QQ : . -.sp -This option is a security problem of immense proportions, -and should not be used under any circumstances. -.sp -.i "This option will never be implemented." -.KY number -.IP "number, nu [off]" -Precede each line displayed with its current line number. -.KY octal -.IP "octal [off]" -Display unknown characters as octal numbers, instead of the default -hexadecimal. -.KY open -.IP "open [on]" -.CO Ex -only. -If this option is not set, the -.CO open -and -.CO visual -commands are disallowed. -.KY optimize -.IP "optimize, opt [on]" -.CO Vi -only. -Throughput of text is expedited by setting the terminal not to do automatic -carriage returns when printing more than one (logical) line of output, -greatly speeding output on terminals without addressable cursors when text -with leading white space is printed. -.sp -.i "This option is not yet implemented." -.KY paragraphs -.IP "paragraphs, para [IPLPPPQPP LIpplpipbp]" -.CO Vi -only. -Define additional paragraph boundaries for the -.CO { -and -.CO } -commands. -The value of this option must be a character string consisting -of zero or more character pairs. -.sp -In the text to be edited, the character string -.LI "<newline>.<char-pair>" , -(where -.LI <char-pair> -is one of the character pairs in the option's value) -defines a paragraph boundary. -For example, if the option were set to -.LI "LaA<space>##" , -then all of the following additional paragraph boundaries would be -recognized: -.sp -.(l -<newline>.La -<newline>.A<space> -<newline>.## -.)l -.KY prompt -.IP "prompt [on]" -.CO Ex -only. -This option causes -.CO ex -to prompt for command input with a -.QT : -character; when it is not set, no prompt is displayed. -.KY readonly -.IP "readonly, ro [off]" -This option causes a force flag to be required to attempt to write -the file back to the original file name. -Setting this option is equivalent to using the -.b \-R -command line option, or editing a file which lacks write permission. -.KY recdir -.IP "recdir [/var/tmp/vi.recover]" -The directory where recovery files are stored. -.sp -If you change the value of -.CO recdir , -be careful to choose a directory whose contents are not regularly -deleted. -Bad choices include directories in memory based filesystems, -or -.LI /tmp , -on most systems, -as their contents are removed when the machine is rebooted. -.sp -Public directories like -.LI /usr/tmp -and -.LI /var/tmp -are usually safe, although some sites periodically prune old files -from them. -There is no requirement that you use a public directory, -e.g. a sub-directory of your home directory will work fine. -.sp -Finally, if you change the value of -.CO recdir , -you must modify the recovery script to operate in your chosen recovery -area. -.sp -See the section entitled -.QB "Recovery" -for further information. -.KY redraw -.IP "redraw, re [off]" -.CO Vi -only. -The editor simulates (using great amounts of output), an intelligent -terminal on a dumb terminal (e.g. during insertions in -.CO vi -the characters to the right of the cursor are refreshed as each input -character is typed). -.sp -.i "This option is not yet implemented." -.KY remap -.IP "remap [on]" -If this option is set, -it is possible to define macros in terms of other macros. -Otherwise, each key is only remapped up to one time. -For example, if -.QT A -is mapped to -.QT B , -and -.QT B -is mapped to -.QT C , -The keystroke -.QT A -will be mapped to -.QT C -if the -.OP remap -option is set, and to -.QT B -if it is not set. -.KY report -.IP "report [5]" -Set the threshold of the number of lines that need to be changed or -yanked before a message will be displayed to the user. -For everything but the yank command, the value is the largest value -about which the editor is silent, i.e. by default, 6 lines must be -deleted before the user is notified. -However, if the number of lines yanked is greater than -.i "or equal to" -the set value, it is reported to the user. -.KY ruler -.IP "ruler [off]" -.CO Vi -only. -Display a row/column ruler on the colon command line. -.KY scroll -.IP "scroll, scr [window / 2]" -Set the number of lines scrolled by the -.CO vi -.CO <control-D> -and -.CO <control-U> -commands. -.sp -Historically, the -.CO ex -.CO z -command, when specified without a count, used two times the size of the -scroll value; the POSIX 1003.2 standard specified the window size, which -is a better choice. -.KY sections -.IP "sections, sect [NHSHH HUnhsh]" -.CO Vi -only. -Define additional section boundaries for the -.CO [[ -and -.CO ]] -commands. -The -.OP sections -option should be set to a character string consisting of zero or -more character pairs. -In the text to be edited, the character string -.LI "<newline>.<char-pair>" , -(where -.LI <char-pair> -is one of the character pairs in the option's value), -defines a section boundary in the same manner that -.OP paragraph -option boundaries are defined. -.KY shell -.IP "shell, sh [environment variable SHELL, or /bin/sh]" -Select the shell used by the editor. -The specified path is the pathname of the shell invoked by the -.CO vi -.CO ! -shell escape command and by the -.CO ex -.CO shell -command. -This program is also used to resolve any shell meta-characters in -.CO ex -commands. -.KY shiftwidth -.IP "shiftwidth, sw [8]" -Set the autoindent and shift command indentation width. -This width is used by the -.OP autoindent -option and by the -.CO < , -.CO > , -and -.CO shift -commands. -.KY showdirty -.IP "showdirty [off]" -.CO Vi -only. -Display an asterisk on the colon command line if the file has been modified. -.KY showmatch -.IP "showmatch, sm [off]" -.CO Vi -only. -This option causes -.CO vi , -when a -.QT } -or -.QT ) -is entered, to briefly move the cursor the matching -.QT { -or -.QT ( . -See the -.OP matchtime -option for more information. -.KY showmode -.IP "showmode [off]" -.CO Vi -only. -This option causes -.CO vi -to display a string identifying the current editor mode on the -colon command line. -.KY sidescroll -.IP "sidescroll [16]" -.CO Vi -only. -Sets the number of columns that are shifted to the left or right, -when -.CO vi -is doing left-right scrolling and the left or right margin is -crossed. -See the -.OP leftright -option for more information. -.KY slowopen -.IP "slowopen, slow [off]" -This option affects the display algorithm used by -.CO vi , -holding off display updating during input of new text to improve -throughput when the terminal in use is slow and unintelligent. -.sp -.i "This option is not yet implemented." -.KY sourceany -.IP "sourceany [off]" -If this option is turned on, -.CO vi -historically read startup files that were owned by someone other than -the editor user. -See the section entitled -.QB "Startup Information" -for more information. -This option is a security problem of immense proportions, -and should not be used under any circumstances. -.sp -.i "This option will never be implemented." -.KY tabstop -.IP "tabstop, ts [8]" -This option sets tab widths for the editor display. -.KY taglength -.IP "taglength, tl [0]" -This option sets the maximum number of characters that are considered -significant in a tag name. -Setting the value to 0 makes all of the characters in the tag name -significant. -.KY tags -.IP "tags, tag [tags /var/db/libc.tags /sys/kern/tags]" -Sets the list of tags files, in search order, -which are used when the editor searches for a tag. -.KY term -.IP "term, ttytype, tty [environment variable TERM]" -Set the terminal type. -Setting this option causes -.EV ex vi -to set (or reset) the environmental variable -.LI TERM . -.KY terse -.IP "terse [off]" -This option has historically made editor messages less verbose. -It has no effect in this implementation. -See the -.OP verbose -option for more information. -.KY tildeop -.IP "tildeop" -Modify the -.CO ~ -command to take an associated motion. -.KY timeout -.IP "timeout, to [on]" -If this option is set, -.EV ex vi -waits for a specific period for a subsequent key to complete a key -mapping (see the -.OP keytime -option). -If the option is not set, the editor waits until enough keys are -entered to resolve the ambiguity, regardless of how long it takes. -.KY ttywerase -.IP "ttywerase [off]" -.CO Vi -only. -This option changes how -.CO vi -does word erase during text input. -If this option is set, text is broken up into two classes, -blank characters and nonblank characters. -Changing from one class to another marks the end of a word. -.KY verbose -.IP "verbose [off]" -.CO Vi -only. -.CO Vi -historically bells the terminal for many obvious mistakes, e.g. trying -to move past the left-hand margin, or past the end of the file. -If this option is set, an error message is displayed for all errors. -.KY w300 -.IP "w300 [no default]" -.CO Vi -only. -Set the window size if the baud rate is less than 1200 baud. -See the -.OP window -option for more information. -.KY w1200 -.IP "w1200 [no default]" -.CO Vi -only. -Set the window size if the baud rate is equal to 1200 baud. -See the -.OP window -option for more information. -.KY w9600 -.IP "w9600 [no default]" -.CO Vi -only. -Set the window size if the baud rate is greater than 1200 baud. -See the -.OP window -option for more information. -.KY warn -.IP "warn [on]" -.CO Ex -only. -This option causes a warning message to the terminal if the file has -been modified, since it was last written, before a -.CO ! -command. -.KY window -.IP "window, w, wi [environment variable LINES]" -This option determines the default number of lines in a screenful, -as written by the -.CO z -command. -It also determines the number of lines scrolled by the -.CO vi -commands -.CO <control-F> -and -.CO <control-B> . -The value of window can be unrelated to the real screen size, -although it starts out as the number of lines on the screen (see -the section entitled -.QB "Sizing the Screen" -for more information). -Setting the value of the -.OP window -option is the same as using the -.b \-w -command line option. -.sp -If the value of the -.OP window -option (as set by the -.OP window , -.OP w300 , -.OP w1200 -or -.OP w9600 -options) is smaller than the actual size of the screen, large screen -movements will result in displaying only that smaller number of lines -on the screen. -(Further movements in that same area will result in the screen being -filled.) -This can provide a performance improvement when viewing different -places in one or more files over a slow link. -.KY wrapmargin -.IP "wrapmargin, wm [0]" -.CO Vi -only. -If the value of the -.OP wrapmargin -option is non-zero, -.CO vi -will split lines so that they end at least that number of characters -before the right-hand margin of the screen. -(Note, the value of -.OP wrapmargin -is -.i not -a text length. -In a screen that is 80 columns wide, the command -.QT ":set wrapmargin=8" -attempts to keep the lines less than or equal to 72 columns wide.) -.sp -Lines are split at the previous whitespace character closest to the -number. -Any trailing whitespace characters before that character are deleted. -If the line is split because of an inserted -.LI <space> -or -.LI <tab> -character, and you then enter another -.LI <space> -character, it is discarded. -.sp -If wrapmargin is set to 0, -or if there is no blank character upon which to split the line, -the line is not broken. -.KY wrapscan -.IP "wrapscan, ws [on]" -This option causes searches to wrap around the end or the beginning -of the file, and back to the starting point. -Otherwise, the end or beginning of the file terminates the search. -.KY writeany -.IP "writeany, wa [off]" -If this option is set, file-overwriting checks that would usually be -made before the -.CO write -and -.CO xit -commands, or before an automatic write (see the -.OP autowrite -option), are not made. -This allows a write to any file, provided the file permissions allow it. diff --git a/usr.bin/vi/USD.doc/vi.ref/spell.ok b/usr.bin/vi/USD.doc/vi.ref/spell.ok deleted file mode 100644 index 60084e31bcf..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/spell.ok +++ /dev/null @@ -1,270 +0,0 @@ -Amir -Autoprint -BRE's -Bostic -Bourne -DOUBLEQUOTE -Dq -Ds -ERE's -EXINIT -Englar -Ev -FF -Fa -Fl -HUnhsh -IPLPPPQPP -Kirkendall -Korn -LIpplpipbp -LaA -Li -Lowercase -MINUSSIGN -Makefiles -NEX -NEXINIT -NHSHH -NVI -Nex -Nvi -OS -POSIX -PostScript -RE's -README -RECDIR -Reference''USD:13 -SIGHUP -SIGWINCH -SQUOTE -Se -Std -Std1003.2 -Sy -TANDARDS -TIOCGWINSZ -TMPDIR -Todo -USD.doc -USD:13 -UUNET -Vx -Whitespace -XOFF -XON -XOptions -XXCOLUMNS -XXXX -XXXXXX -XXb -ZZ -ab -abbrev -ags -ai -al -altwerase -arg -args -autoindent -autoprint -autowrite -aw -bbrev -bf -bigword -bigwords -bostic -brev -bugs.current -c2w -carat -cdy -changelog -chd -cmd -count1 -count2 -creens -cs.berkeley.edu -db -dbopen -def -di -dir -dit -docs -eFlRsv -eFlRv -ead -eb -edcompatible -elete -elvis -email -enum -eof -errorbells -esc -ex.cmd.roff -exrc -ext -exu -exusage -fi -filesystem -filesystems -ftp.cs.berkeley.edu -ftp.uu.net -gdb -gdb.script -gs -gzip'd -halfbyte -hange -hangup -hardtabs -ht -ic -ifdef -ignorecase -ile -ind -ious -ir -ist -ize -keystroke -keystrokes -keytime -leftright -lhs -li -lib -libc.tags -lobal -lowercase -lp -matchtime -mber -meta -mk -mkexrc -modeful -modeline -modelines -ndo -nex -nexrc -nk -nomagic -nooption -nsert -nul -nvi -nvi.tar.Z -nvi.tar.z -nz -oin -op -ove -para -pathname -pathnames -ppend -pu -py -rc.local -readonly -rec -recdir -recfile -recover.XXXX -recover.XXXXXX -recover.c -recover.script -remapmax -res -rew -rhs -ript -rk -ro -roff -rsion -sc -scr -screeen -se -set.opt.roff -shiftwidth -showmatch -showmode -sidescroll -slowopen -sm -sourceany -sp -spell.ok -st -sual -svi -sw -ta -tabstop -taglength -tagp -tagpop -tagstring -tagt -tagtop -terminfo -th -tildeop -tl -tmp -ts -ttytype -ttywerase -uR -ubstitute -ucb -uffers -uit -una -unabbrev -unm -uppercase -urce -uunet -var -ve -vglobal -vi.0.ps -vi.0.txt -vi.1 -vi.XXXX -vi.XXXXXX -vi.cmd.roff -vi.exrc -vi.recover -vibackup -virecovery -viu -viusage -wa -whitespace -wi -wm -wn -wq -wrapmargin -wrapscan -writeany -ws -xaw -xit -ya -yy diff --git a/usr.bin/vi/USD.doc/vi.ref/vi.cmd.roff b/usr.bin/vi/USD.doc/vi.ref/vi.cmd.roff deleted file mode 100644 index 57c0d372af6..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/vi.cmd.roff +++ /dev/null @@ -1,2984 +0,0 @@ -.\" Copyright (c) 1994 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)vi.cmd.roff 8.28 (Berkeley) 7/17/94 -.\" -.SH 1 "Vi Description" -.pp -.CO Vi -takes up the entire screen to display the edited file, -except for the bottom line of the screen. -The bottom line of the screen is used to enter -.CO ex -commands, and for -.CO vi -error and informational messages. -If no other information is being displayed, -the default display can show the current cursor row and cursor column, -an indication of whether the file has been modified, -and the current mode of the editor. -See the -.OP ruler , -.OP showdirty -and -.OP showmode -options for more information. -.pp -Empty lines do not have any special representation on the screen, -but lines on the screen that would logically come after the end of -the file are displayed as a single tilde -.PQ ~ -character. -To differentiate between empty lines and lines consisting of only -whitespace characters, use the -.OP list -option. -Historically, implementations of -.CO vi -have also displayed some lines as single asterisk -.PQ @ -characters. -These were lines that were not correctly displayed, i.e. lines on the -screen that did not correspond to lines in the file, or lines that did -not fit on the current screen. -.CO Nvi -never displays lines in this fashion. -.pp -.CO Vi -is a modeful editor, i.e. it has two modes, -.QQ command -mode and -.QQ "text input" -mode. -When -.CO vi -first starts, it is in command mode. -There are several commands that change -.CO vi -into text input mode. -The -.LI <escape> -character is used to resolve the text input into the file, -and exit back into command mode. -In -.CO vi -command mode, the cursor is always positioned on the last column of -characters which take up more than one column on the screen. -In -.CO vi -text insert mode, the cursor is positioned on the first column of -characters which take up more than one column on the screen. -.pp -Generally, if the cursor line and cursor column are not on the screen, -then the screen is scrolled (if the target cursor is close) or repainted -(if the target cursor is far away) so that the cursor is on the screen. -If the screen is scrolled, it is moved a minimal amount, and the cursor -line will usually appear at the top or bottom of the screen. -In the screen is repainted, the cursor line will appear in the center of -the screen, unless the cursor is sufficiently close to the beginning or -end of the file that this is not possible. -If the -.OP leftright -option is set, the screen may be scrolled or repainted in a horizontal -direction as well as in a vertical one. -.pp -A major difference between the historical -.CO vi -presentation and -.CO nvi -is in the scrolling and screen oriented position commands, -.CO <control-B> , -.CO <control-D> , -.CO <control-E> , -.CO <control-F> , -.CO <control-U> , -.CO <control-Y> , -.CO H , -.CO L -and -.CO M . -In historical implementations of -.CO vi , -these commands acted on physical (as opposed to logical, or screen) -lines. -For lines that were sufficiently long in relation to the size of the -screen, this meant that single line scroll commands might repaint the -entire screen, scrolling or screen positioning command might not change -the screen or move the cursor at all, and some lines simply could not -be displayed, even though -.CO vi -would edit the file that contained them. -In -.CO nvi , -these commands act on logical, i.e. screen lines. -You are unlikely to notice any difference unless you are editing files -with lines significantly longer than a screen width. -.pp -.CO Vi -keeps track of the currently -.QQ "most attractive" -cursor position. -Each command description (for commands that can change the current -cursor position), -specifies if the cursor is set to a specific location in the line, -or if it is moved to the -.QQ "most attractive cursor position" . -The latter means that the cursor is moved to the cursor position -that is vertically as close as possible to the current cursor -position. -If the current line is shorter than the cursor position -.CO vi -would select, the cursor is positioned on the last character in the line. -(If the line is empty, the cursor is positioned on the first column -of the line.) -If a command moves the cursor to the most attractive position, -it does not alter the current cursor position, and a subsequent -movement will again attempt to move the cursor to that position. -Therefore, although a movement to a line shorter than the currently -most attractive position will cause the cursor to move to the end of -that line, a subsequent movement to a longer line will cause the -cursor to move back to the most attractive position. -.pp -In addition, the -.CO $ -command makes the end of each line the most attractive cursor position -rather than a specific column. -.pp -Each -.CO vi -command described below notes where the cursor ends up after it is -executed. -This position is described in terms of characters on the line, i.e. -.QQ "the previous character" , -or, -.QQ "the last character in the line" . -This is to avoid needing to continually refer to on what part of the -character the cursor rests. -.pp -The following words have special meaning for -.CO vi -commands. -.KY "previous context" -.IP "previous context" -The position of the cursor before the command which caused the -last absolute movement was executed. -Each -.CO vi -command described in the next section that is considered an -absolute movement is so noted. -In addition, specifying -.i any -address to an -.CO ex -command is considered an absolute movement. -.KY "motion" -.IP "motion" -A second -.CO vi -command can be used as an optional trailing argument to the -.CO vi -.CO \&! , -.CO \&< , -.CO \&> , -.CO \&c , -.CO \&d , -.CO \&y , -and (depending on the -.OP tildeop -option) -.CO \&~ -commands. -This command indicates the end of the region of text that's affected by -the command. -The motion command may be either the command character repeated (in -which case it means the current line) or a cursor movement command. -In the latter case, the region affected by the command is from the -starting or stopping cursor position which comes first in the file, -to immediately before the starting or stopping cursor position which -comes later in the file. -Commands that operate on lines instead of using beginning and ending -cursor positions operate on all of the lines that are wholly or -partially in the region. -In addition, some other commands become line oriented depending on -where in the text they are used. -The command descriptions below note these special cases. -.sp -The following commands may all be used as motion components for -.CO vi -commands: -.sp -.ne 12v -.ft C -.TS -r r r r. -<control-A> <control-H> <control-J> <control-M> -<control-N> <control-P> <space> $ -% '<character> ( ) -+ , - / -0 ; ? B -E F G H -L M N T -W [[ ]] ^ -\&_ `<character> b e -f h j k -l n t w -{ | } -.TE -.ft R -.sp -The optional count prefix available for some of the -.CO vi -commands that take motion commands, or the count prefix available -for the -.CO vi -commands that are used as motion components, -may be included and is -.i always -considered part of the motion argument. -For example, the commands -.QT c2w -and -.QT 2cw -are equivalent, and the region affected by the -.CO c -command is two words of text. -In addition, if the optional count prefix is specified for both the -.CO vi -command and its motion component, the effect is multiplicative and -is considered part of the motion argument. -For example, the commands -.QT 4cw -and -.QT 2c2w -are equivalent, and the region affected by the -.CO c -command is four words of text. -.KY "count" -.IP "count" -A positive number used as an optional argument to most commands, -either to give a size or a position (for display or movement commands), -or as a repeat count (for commands that modify text). -The count argument is always optional and defaults to 1 unless otherwise -noted in the command description. -.sp -When a -.CO vi -command synopsis shows both a -.LI [buffer] -and -.LI [count] , -they may be presented in any order. -.KY "bigword" -.IP "bigword" -A set of non-whitespace characters preceded and followed by whitespace -characters or the beginning or end of the file or line. -.sp -Groups of empty lines (or lines containing only whitespace characters) -are treated as a single bigword. -.KY word -.IP word -Generally, in languages where it is applicable, -.CO vi -recognizes two kinds of words. -First, a sequence of letters, digits and underscores, delimited at both -ends by: characters other than letters, digits, or underscores; the -beginning or end of a line; the beginning or end of the file. -Second, a sequence of characters other than letters, digits, underscores, -or whitespace characters, delimited at both ends by: a letter, digit, -underscore, or whitespace character; -the beginning or end of a line; the beginning or end of the file. -.sp -Groups of empty lines (or lines containing only whitespace characters) -are treated as a single word. -.KY "paragraph" -.IP "paragraph" -An area of text that begins with either the beginning of a file, -an empty line, or a section boundary, and continues until either -an empty line, section boundary, or the end of the file. -.sp -Groups of empty lines (or lines containing only whitespace characters) -are treated as a single paragraph. -.sp -Additional paragraph boundaries can be defined using the -.OP paragraph -option. -.KY "section" -.IP "section" -An area of text that starts with the beginning of the file or a line -whose first character is an open brace -.PQ { -and continues until the next section or the end of the file. -.sp -Additional section boundaries can be defined using the -.OP sections -option. -.KY "sentence" -.IP "sentence" -An area of text that begins with either the beginning of the file or the -first nonblank character following the previous sentence, paragraph, or -section boundary and continues until the end of the file or a or a period -.PQ \&. -exclamation point -.PQ ! -or question mark -.PQ ? -character, -followed by either an end-of-line or two whitespace characters. -Any number of closing parentheses -.PQ ) , -brackets -.PQ ] -or double-quote -.PQ """" -characters can appear between the period, exclamation point, -or question mark and the whitespace characters or end-of-line. -.sp -Groups of empty lines (or lines containing only whitespace characters) -are treated as a single sentence. -.SH 1 "Vi Commands" -.pp -The following section describes the commands available in the command -mode of the -.CO vi -editor. -In each entry below, the tag line is a usage synopsis for the command -character. -In addition, the final line and column the cursor rests upon, -and any options which affect the command are noted. -.KY <control-A> -.IP "[count] <control-A>" -Search forward -.LI count -times for the current word. -The current word begins at the first non-whitespace character on or -after the current cursor position, -and extends up to the next non-word character or the end of the line. -The search is literal, i.e. no characters in the word have any special -meaning in terms of Regular Expressions. -It is an error if no matching pattern is found between the starting position -and the end of the file. -.sp -The -.CO <control-A> -command is an absolute movement. -The -.CO <control-A> -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Set to the line where the word is found. -.SP Column: -Set to the first character of the word. -.SP Options: -Affected by the -.OP extended , -.OP ignorecase -and -.OP wrapscan -options. -.SE -.KY <control-B> -.IP "[count] <control-B>" -Page backward -.LI count -screens. -Two lines of overlap are maintained by displaying the window -starting at line -.LI "(top_line - count * window_size) + 2" , -where -.LI window_size -is the value of the -.OP window -option. -(In the case of split screens, this size is corrected to the -current screen size.) -This is an error if the movement is past the beginning of the file. -.sp -The -.CO <control-B> -command is an absolute movement. -.SS -.SP Line: -Set to the last line of text displayed on the screen. -.SP Column: -Set to the first nonblank character of the line. -.SP Options: -None. -.SE -.KY <control-D> -.IP "[count] <control-D>" -Scroll forward -.LI count -lines. -If -.LI count -is not specified, scroll forward the number of lines specified by the last -.CO <control-D> -or -.CO <control-U> -command. -If this is the first -.CO <control-D> -or -.CO <control-U> -command, -scroll forward half the number of lines in the screen. -(In the case of split screens, the default scrolling distance is -corrected to half the current screen size.) -This is an error if the movement is past the end of the file. -.sp -The -.CO <control-D> -command is an absolute movement. -.SS -.SP Line: -Set to the current line plus the number of lines scrolled. -.SP Column: -Set to the first nonblank character of the line. -.SP Options: -None. -.SE -.KY <control-E> -.IP "[count] <control-E>" -Scroll forward -.LI count -lines, leaving the cursor on the current line and column, if possible. -This is an error if the movement is past the end of the file. -.SS -.SP Line: -Unchanged unless the current line scrolls off the screen, -in which case it is set to the first line on the screen. -.SP Column: -Unchanged unless the current line scrolls off the screen, -in which case it is set to the most attractive cursor position. -.SP Options: -None. -.SE -.KY <control-F> -.IP "[count] <control-F>" -Page forward -.LI count -screens. -Two lines of overlap are maintained by displaying the window -starting at line -.LI "top_line + count * window_size - 2" , -where -.LI window_size -is the value of the -.OP window -option. -(In the case of split screens, this size is corrected to the -current screen size.) -This is an error if the movement is past the end of the file. -.sp -The -.CO <control-F> -command is an absolute movement. -.SS -.SP Line: -Set to the first line on the screen. -.SP Column: -Set to the first nonblank character of the current line. -.SP Options: -None. -.SE -.KY <control-G> -.IP "<control-G>" -Display the file information. -The information includes the current pathname, the current line, -the number of total lines in the file, the current line as a percentage -of the total lines in the file, if the file has been modified, -was able to be locked, if the file's name has been changed, -and if the edit session is read-only. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged. -.SP Options: -None. -.SE -.KY <control-H> -.IP "<control-H>" -.Ip "[count] h" -Move the cursor back -.LI count -characters in the current line. -This is an error if the cursor is on the first character in the line. -.sp -The -.CO <control-H> -and -.CO h -commands may be used as the motion component of other -.CO vi -commands, -in which case any text copied into a buffer is character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the -.LI "current - count" -character, or, the first character in the line if -.LI count -is greater than or equal to the number of characters in the line -before the cursor. -.SP Options: -None. -.SE -.KY <control-J> -.IP "[count] <control-J>" -.KY <control-N> -.Ip "[count] <control-N>" -.KY j -.Ip "[count] j" -Move the cursor down -.LI count -lines without changing the current column. -This is an error if the movement is past the end of the file. -.sp -The -.CO <control-J> , -.CO <control-N> -and -.CO j -commands may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to the current line plus -.LI count . -.SP Column: -The most attractive cursor position. -.SP Options: -None. -.SE -.KY <control-L> -.IP "<control-L>" -.KY <control-R> -.Ip "<control-R>" -Repaint the screen. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged. -.SP Options: -None. -.SE -.KY <control-M> -.IP "[count] <control-M>" -.KY + -.Ip "[count] +" -Move the cursor down -.LI count -lines to the first nonblank character of that line. -This is an error if the movement is past the end of the file. -.sp -The -.CO <control-M> -and -.CO + -commands may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to the current line plus -.LI count . -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -None. -.SE -.KY <control-P> -.IP "[count] <control-P>" -.KY k -.Ip "[count] k" -Move the cursor up -.LI count -lines, without changing the current column. -This is an error if the movement is past the beginning of the file. -.sp -The -.CO <control-P> -and -.CO k -commands may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to the current line minus count. -.SP Column: -The most attractive cursor position. -.SP Options: -None. -.SE -.KY <control-T> -.IP "<control-T>" -Return to the most recent tag context. -The -.CO <control-T> -command is an absolute movement. -.SS -.SP Line: -Set to the context of the previous tag command. -.SP Column: -Set to the context of the previous tag command. -.SP Options: -None. -.SE -.KY <control-U> -.IP "<control-U>" -Scroll backward -.LI count -lines. -If -.LI count -is not specified, scroll backward the number of lines specified by the -last -.CO <control-D> -or -.CO <control-U> -command. -If this is the first -.CO <control-D> -or -.CO <control-U> -command, -scroll backward half the number of lines in the screen. -(In the case of split screens, the default scrolling distance is -corrected to half the current screen size.) -This is an error if the movement is past the beginning of the file. -.sp -The -.CO <control-U> -command is an absolute movement. -.SS -.SP Line: -Set to the current line minus the amount scrolled. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -None. -.SE -.KY <control-W> -.IP "<control-W>" -Switch to the next lower screen in the window, or, to the first -screen if there are no lower screens in the window. -.SS -.SP Line: -Set to the previous cursor position in the window. -.SP Column: -Set to the previous cursor position in the window. -.SP Options: -None. -.SE -.KY <control-Y> -.IP "<control-Y>" -Scroll backward -.LI count -lines, leaving the current line and column as is, if possible. -This is an error if the movement is past the beginning of the file. -.SS -.SP Line: -Unchanged unless the current line scrolls off the screen, -in which case it is set to the last line of text displayed -on the screen. -.SP Column: -Unchanged unless the current line scrolls off the screen, -in which case it is the most attractive cursor position. -.SP Options: -None. -.SE -.KY <control-Z> -.IP "<control-Z>" -Suspend the current editor session. -If the file has been modified since it was last completely written, -and the -.OP autowrite -option is set, the file is written before the editor session is -suspended. -If this write fails, the editor session is not suspended. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged. -.SP Options: -Affected by the -.OP autowrite -option. -.SE -.KY <escape> -.IP "<escape>" -Execute -.CO ex -commands or cancel partial commands. -If an -.CO ex -command is being entered (e.g. -.CO / , -.CO ? , -.CO : -or -.CO ! ), -the command is executed. -If a partial command has been entered, e.g. -.QL "[0-9]*" , -or -.QL "[0-9]*[!<>cdy]" , -the command is cancelled. -Otherwise, it is an error. -.SS -.SP Line: -When an -.CO ex -command is being executed, the current line is set as described for -that command. -Otherwise, unchanged. -.SP Column: -When an -.CO ex -command is being executed, the current column is set as described for -that command. -Otherwise, unchanged. -.SP Options: -None. -.SE -.KY <control-]> -.IP "<control-]>" -Push a tag reference onto the tag stack. -The tags files (see the -.OP tags -option for more information) are searched for a tag matching the -current word. -The current word begins at the first non-whitespace character on or -after the current cursor position, -and extends up to the next non-word character or the end of the line. -If a matching tag is found, the current file is discarded and the -file containing the tag reference is edited. -.sp -If the current file has been modified since it was last completely -written, the command will fail. -The -.CO <control-]> -command is an absolute movement. -.SS -.SP Line: -Set to the line containing the matching tag string. -.SP Column: -Set to the start of the matching tag string. -.SP Options: -Affected by the -.OP tags -and -.OP taglength -options. -.SE -.KY <control-^> -.IP "<control-^>" -Switch to the most recently edited file. -.sp -If the file has been modified since it was last completely written, -and the -.OP autowrite -option is set, the file is written out. -If this write fails, the command will fail. -Otherwise, if the current file has been modified since it was last -completely written, the command will fail. -.SS -.SP Line: -Set to the line the cursor was on when the file was last edited. -.SP Column: -Set to the column the cursor was on when the file was last edited. -.SP Options: -Affected by the -.OP autowrite -option. -.SE -.KY <space> -.IP "[count] <space>" -.KY l -.Ip "[count] l" -Move the cursor forward -.LI count -characters without changing the current line. -This is an error if the cursor is on the last character in the line. -.sp -The -.CO <space> -and -.CO \&l -commands may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -In addition, these commands may be used as the motion components -of other commands when the cursor is on the last character in the -line, without error. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the current character plus the next -.LI count -characters, or to the last character on the line if -.LI count -is greater than the number of characters in the line after the -current character. -.SP Options: -None. -.SE -.KY ! -.IP "[count] ! motion shell-argument(s)" -Replace text with results from a shell command. -Pass the lines specified by the -.LI count -and -.LI motion -arguments as standard input to the program named by the -.OP shell -option, and replace those lines with the output (both -standard error and standard output) of that command. -.sp -After the motion is entered, -.CO vi -prompts for arguments to the shell command. -.sp -Within those arguments, -.QT % -and -.QT # -characters are expanded to the current and alternate pathnames, -respectively. -The -.QT ! -character is expanded with the command text of the previous -.CO ! -or -.CO :! -commands. -(Therefore, the command -.CO !! -repeats the previous -.CO ! -command.) -The special meanings of -.QT % , -.QT # -and -.QT ! -can be overridden by escaping them with a backslash. -If no -.CO ! -or -.CO :! -command has yet been executed, it is an error to use an unescaped -.QT ! -character. -The -.CO ! -command does -.i not -do shell expansion on the strings provided as arguments. -If any of the above expansions change the arguments the user entered, -the command is redisplayed at the bottom of the screen. -.sp -.CO Vi -then executes the program named by the -.OP shell -option, with a -.b \-c -flag followed by the arguments (which are bundled into a single argument). -.sp -The -.CO ! -command is permitted in an empty file. -.sp -If the file has been modified since it was last completely written, -the -.CO ! -command will warn you. -.SS -.SP Line: -The first line of the replaced text. -.SP Column: -The first column of the replaced text. -.SP Options: -Affected by the -.OP shell -option. -.SE -.KY # -.IP "[count] # +|-|#" -Increment or decrement the current number. -The current number begins at the first non-number character on or -before the current cursor position, or the beginning of the line, -and extends up to the first non-number character on or after the -current cursor position or the end of the line. -If the trailing character is a -.LI \&+ , -the number is incremented by -.LI count . -If the trailing character is a -.LI \&- , -the number is decremented by -.LI count . -If the trailing character is a -.LI \&# , -the previous increment or decrement is repeated. -.sp -The format of the number (decimal, hexadecimal, and octal, -and leading 0's) is retained unless the new value cannot be -represented in the previous format. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the first character in the cursor word. -.SP Options: -None. -.SE -.KY $ -.IP "[count] $" -Move the cursor to the end of a line. -If -.LI count -is specified, the cursor moves down -.LI "count - 1" -lines. -.sp -It is not an error to use the -.CO $ -command when the cursor is on the last character in the line or -when the line is empty. -.sp -The -.CO $ -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the cursor is at, or before the first -nonblank character in the line, in which case it is line oriented. -It is not an error to use the -.CO $ -command as a motion component when the cursor is on the last character -in the line, although it is an error when the line is empty. -.SS -.SP Line: -Set to the current line plus -.LI count -minus 1. -.SP Column: -Set to the last character in the line. -.SP Options: -None. -.SE -.KY % -.IP % -Move to the matching character. -The cursor moves to the parenthesis or curly brace which -.i matches -the parenthesis or curly brace found at the current cursor position -or which is the closest one to the right of the cursor on the line. -It is an error to execute the -.CO % -command on a line without a parenthesis or curly brace. -Historically, any -.LI count -specified to the -.CO % -command was ignored. -.sp -The -.CO % -command is an absolute movement. -The -.CO % -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting point of the region is at -or before the first nonblank character on its line, and the ending -point is at or after the last nonblank character on its line, in -which case it is line oriented. -.SS -.SP Line: -Set to the line containing the matching character. -.SP Column: -Set to the matching character. -.SP Options: -None. -.SE -.KY & -.IP "&" -Repeat the previous substitution command on the current line. -.sp -Historically, any -.LI count -specified to the -.CO & -command was ignored. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged if the cursor was on the last character in the line, -otherwise, set to the first nonblank character in the line. -.SP Options: -Affected by the -.OP edcompatible , -.OP extended , -.OP ignorecase -and -.OP magic -options. -.SE -.KY SQUOTE<character> -.IP \'<character> -.KY `<character> -.Ip `<character> -Return to a context marked by the character -.LI <character> . -If -.LI <character> -is the -.QT ' -or -.QT ` -character, return to the previous context. -If -.LI <character> -is any other character, -return to the context marked by that character (see the -.CO m -command for more information). -If the command is the -.CO \' -command, only the line value is restored, -and the cursor is placed on the first nonblank character of that line. -If the command is the -.CO ` -command, both the line and column values are restored. -.sp -It is an error if the context no longer exists because of -line deletion. -(Contexts follow lines that are moved, or which are deleted -and then restored.) -.sp -The -.CO \' -and -.CO ` -commands are both absolute movements. -They may be used as a motion component for other -.CO vi -commands. -For the -.CO \' -command, any text copied into a buffer is line oriented. -For the -.CO ` -command, any text copied into a buffer is character oriented, unless -it both starts and stops at the first character in the line, in which -case it is line oriented. -In addition, when using the -.CO ` -command as a motion component, -commands which move backward and started at the first character in the -line, or move forward and ended at the first character in the line, -are corrected to the last character of the starting and ending lines, -respectively. -.SS -.SP Line: -Set to the line from the context. -.SP Column: -Set to the first nonblank character in the line, for the -.CO \' -command, and set to the context's column for the -.CO ` -command. -.SP Options: -None. -.SE -.KY ( -.IP "[count] (" -Back up -.LI count -sentences. -.sp -The -.CO ( -command is an absolute movement. -The -.CO ( -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting and stopping points of the -region are the first character in the line, in which case it is -line oriented. -In the latter case, the stopping point of the region is adjusted -to be the end of the line immediately before it, and not the original -cursor position. -.SS -.SP Line: -Set to the line containing the beginning of the sentence. -.SP Column: -Set to the first nonblank character of the sentence. -.SP Options: -None. -.SE -.KY ) -.IP "[count] )" -Move forward -.LI count -sentences. -.sp -The -.CO ) -command is an absolute movement. -The -.CO ) -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting point of the region is the -first character in the line, in which case it is line oriented. -In the latter case, if the stopping point of the region is also -the first character in the line, it is adjusted to be the end of the -line immediately before it. -.SS -.SP Line: -Set to the line containing the beginning of the sentence. -.SP Column: -Set to the first nonblank character of the sentence. -.SP Options: -None. -.SE -.KY , -.IP "[count] ," -Reverse find character -.LI count -times. -Reverse the last -.CO F , -.CO f , -.CO T -or -.CO t -command, searching the other way in the line, -.LI count -times. -.sp -The -.CO , -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the searched-for character. -.SP Options: -None. -.SE -.KY MINUSSIGN -.IP "[count] \-" -Move to first nonblank of the previous line, -.LI count -times. -.sp -This is an error if the movement is past the beginning of the file. -.sp -The -.CO - -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to the current line minus -.LI count . -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -None. -.SE -.KY \&. -.IP "[count] \&." -Repeat the last -.CO vi -command that modified text. -The repeated command may be a command and motion component combination. -If -.LI count -is specified, it replaces -.i both -the count specified for the repeated command, and, if applicable, for -the repeated motion component. -If -.LI count -is not specified, the counts originally specified to the command being -repeated are used again. -.sp -As a special case, if the -.CO \. -command is executed immediately after the -.CO u -command, the change log is rolled forward or backward, depending on -the action of the -.CO u -command. -.SS -.SP Line: -Set as described for the repeated command. -.SP Column: -Set as described for the repeated command. -.SP Options: -None. -.SE -.KY /RE/ -.IP "/RE<carriage-return>" -.Ip "/RE/ [offset]<carriage-return>" -.KY ?RE? -.Ip "?RE<carriage-return>" -.Ip "?RE? [offset]<carriage-return>" -.KY N -.Ip "N" -.KY n -.Ip "n" -Search forward or backward for a regular expression. -The commands beginning with a slash -.PQ / -character are forward searches, the commands beginning with a -question mark -.PQ ? -are backward searches. -.CO Vi -prompts with the leading character on the last line of the screen -for a string. -It then searches forward or backward in the file for the next -occurrence of the string, which is interpreted as a Basic Regular -Expression. -.sp -The -.CO / -and -.CO ? -commands are absolute movements. -They may be used as the motion components of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the search started and ended on -the first column of a line, in which case it is line oriented. -In addition, forward searches ending at the first character of a line, -and backward searches beginning at the first character in the line, -are corrected to begin or end at the last character of the previous line. -(Note, forward and backward searches can occur for both -.CO / -and -.CO ? -commands, if the -.OP wrapscan -option is set.) -.sp -If an offset from the matched line is specified (i.e. a trailing -.QT / -or -.QT ? -character is followed by a signed offset), the buffer will always -be line oriented (e.g. -.QT /string/+0 -will always guarantee a line orientation). -.sp -The -.CO n -command repeats the previous search. -.sp -The -.CO N -command repeats the previous search, but in the reverse direction. -.sp -Missing RE's (e.g. -.QT //<carriage-return> , -.QT /<carriage-return> , -.QT ??<carriage-return> , -or -.QT ?<carriage-return> -search for the last search RE, in the indicated direction. -.sp -Searches may be interrupted using the -.LI <interrupt> -character. -.SS -.SP Line: -Set to the line in which the match occurred. -.SP Column: -Set to the first character of the matched string. -.SP Options: -Affected by the -.OP edcompatible , -.OP extended , -.OP ignorecase , -.OP magic , -and -.OP wrapscan -options. -.SE -.KY 0 -.IP "0" -Move to the first character in the current line. -It is not an error to use the -.CO 0 -command when the cursor is on the first character in the line, -.sp -The -.CO 0 -command may be used as the motion component of other -.CO vi -commands, in which case it is an error if the cursor is on the -first character in the line. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the first character in the line. -.SP Options: -None. -.SE -.KY : -.IP ":" -Execute an ex command. -.CO Vi -prompts for an -.CO ex -command on the last line of the screen, using a colon -.PQ : -character. -The command is terminated by a -.LI <carriage-return> , -.LI <newline> -or -.LI <escape> -character; all of these characters may be escaped by using a -.LI "<literal next>" -character. -The command is then executed. -.sp -If the -.CO ex -command writes to the screen, -.CO vi -will prompt the user for a -.LI <carriage-return> -before continuing -when the -.CO ex -command finishes. -Large amounts of output from the -.CO ex -command will be paged for the user, and the user prompted for a -.LI <carriage-return> -or -.LI <space> -key to continue. -In some cases, a quit (normally a -.QQ q -character) or -.LI <interrupt> -may be entered to interrupt the -.CO ex -command. -.sp -When the -.CO ex -command finishes, and the user is prompted to resume visual mode, -it is also possible to enter another -.QT : -character followed by another -.CO ex -command. -.SS -.SP Line: -The current line is set as described for the -.CO ex -command. -.SP Column: -The current column is set as described for the -.CO ex -command. -.SP Options: -None. -.SE -.KY ; -.IP "[count] ;" -Repeat the last character find -.LI count -times. -The last character find is one of the -.CO F , -.CO f , -.CO T -or -.CO t -commands. -.sp -The -.CO ; -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the searched-for character. -.SP Options: -None. -.SE -.KY < -.IP "[count] < motion" -.KY > -.Ip "[count] > motion" -Shift lines left or right. -Shift the number of lines in the region specified by the motion component, -times -.LI count , -left (for the -.CO < -command) or right (for the -.CO > -command) by the number of columns specified by the -.OP shiftwidth -option. -Only whitespace characters are deleted when shifting left; -once the first character in the line contains a nonblank character, -the -.CO shift -will succeed, but the line will not be modified. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -Affected by the -.OP shiftwidth -option. -.SE -.KY @ -.IP "@ buffer" -Execute a named buffer. -Execute the named buffer as -.CO vi -commands. -The buffer may include -.CO ex -commands, too, but they must be expressed as a -.CO : -command. -If the buffer is line oriented, -.LI <newline> -characters are logically appended to each line of the buffer. -If the buffer is character oriented, -.LI <newline> -characters are logically appended to all but the last line in the buffer. -.sp -If the buffer name is -.QT @ , -or -.QT * , -then the last buffer executed shall be used. -It is an error to specify -.QT @@ -or -.QT ** -if there were no buffer previous executions. -The text of a macro may contain an -.CO @ -command, -and it is possible to create infinite loops in this manner. -(The -.LI <interrupt> -character may be used to interrupt the loop.) -.SS -.SP Line: -The current line is set as described for the command(s). -.SP Column: -The current column is set as described for the command(s). -.SP Options: -None. -.SE -.KY A -.IP "[count] A" -Enter input mode, appending the text after the end of the line. -If -.LI count -is specified, the text is repeatedly input -.LI "count - 1" -more times after input mode is exited. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY B -.IP "[count] B" -Move backward -.LI count -bigwords. -Move the cursor backward to the beginning of a bigword by repeating the -following algorithm: if the current position is at the beginning of a -bigword or the character at the current position cannot be part of a bigword, -move to the first character of the preceding bigword. -Otherwise, move to the first character of the bigword at the current position. -If no preceding bigword exists on the current line, move to the first -character of the last bigword on the first preceding line that contains a -bigword. -.sp -The -.CO B -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Set to the line containing the word selected. -.SP Column: -Set to the first character of the word selected. -.SP Options: -None. -.SE -.KY C -.IP "[buffer] [count] C" -Change text from the current position to the end-of-line. -If -.LI count -is specified, the input text replaces from the current position to -the end-of-line, plus -.LI "count - 1" -subsequent lines. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY D -.IP "[buffer] D" -Delete text from the current position to the end-of-line. -.sp -It is not an error to execute the -.CO D -command on an empty line. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the character before the current character, or, column 1 if -the cursor was on column 1. -.SP Options: -None. -.SE -.KY E -.IP "[count] E" -Move forward -.LI count -end-of-bigwords. -Move the cursor forward to the end of a bigword by repeating the -following algorithm: if the current position is the end of a -bigword or the character at that position cannot be part of a bigword, -move to the last character of the following bigword. -Otherwise, move to the last character of the bigword at the current -position. -If no succeeding bigword exists on the current line, -move to the last character of the first bigword on the next following -line that contains a bigword. -.sp -The -.CO E -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Set to the line containing the word selected. -.SP Column: -Set to the last character of the word selected. -.SP Options: -None. -.SE -.KY F -.IP "[count] F <character>" -Search -.LI count -times backward through the current line for -.LI <character> . -.sp -The -.CO F -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the searched-for character. -.SP Options: -None. -.SE -.KY G -.IP "[count] G" -Move to line -.LI count , -or the last line of the file if -.LI count -not specified. -.sp -The -.CO G -command is an absolute movement. -The -.CO \&G -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to -.LI count , -if specified, otherwise, the last line. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -None. -.SE -.KY H -.IP "[count] H" -Move to the screen line -.LI "count - 1" -lines below the top of the screen. -.sp -The -.CO H -command is an absolute movement. -The -.CO H -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to the line -.LI "count - 1" -lines below the top of the screen. -.SP Column: -Set to the first nonblank character of the -.i screen -line. -.SP Options: -None. -.SE -.KY I -.IP "[count] I" -Enter input mode, inserting the text at the beginning of the line. -If -.LI count -is specified, the text input is repeatedly input -.LI "count - 1" -more times. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -None. -.SE -.KY J -.IP "[count] J" -Join lines. -If -.LI count -is specified, -.LI count -lines are joined; a minimum of two lines are always joined, -regardless of the value of -.LI count . -.sp -If the current line ends with a whitespace character, all whitespace -is stripped from the next line. -Otherwise, if the next line starts with a open parenthesis -.PQ ( -do nothing. -Otherwise, if the current line ends with a question mark -.PQ ? , -period -.PQ \&. -or exclamation point -.PQ ! , -insert two spaces. -Otherwise, insert a single space. -.sp -It is not an error to join lines past the end of the file, -i.e. lines that do not exist. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the character after the last character of the next-to-last -joined line. -.SP Options: -None. -.SE -.KY L -.IP "[count] L" -Move to the screen line -.LI "count - 1" -lines above the bottom of the screen. -.sp -The -.CO L -command is an absolute movement. -The -.CO L -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.SS -.SP Line: -Set to the line -.LI "count - 1" -lines above the bottom of the screen. -.SP Column: -Set to the first nonblank character of the -.i screen -line. -.SP Options: -None. -.SE -.KY M -.IP " M" -Move to the screen line in the middle of the screen. -.sp -The -.CO M -command is an absolute movement. -The -.CO M -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.sp -Historically, any -.LI count -specified to the -.CO M -command was ignored. -.SS -.SP Line: -Set to the line in the middle of the screen. -.SP Column: -Set to the first nonblank character of the -.i screen -line. -.SP Options: -None. -.SE -.KY O -.IP "[count] O" -Enter input mode, appending text in a new line above the current line. -If -.LI count -is specified, the text input is repeatedly input -.LI "count - 1" -more times. -.sp -Historically, any -.LI count -specified to the -.CO O -command was ignored. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY P -.IP "[buffer] P" -Insert text from a buffer. -Text from the buffer (the unnamed buffer by default) is inserted -before the current column or, if the buffer is line oriented, -before the current line. -.SS -.SP Line: -Set to the lowest numbered line insert, -if the buffer is line oriented, otherwise unchanged. -.SP Column: -Set to the first nonblank character of the appended text, -if the buffer is line oriented, otherwise, the last character -of the appended text. -.SP Options: -None. -.SE -.KY Q -.IP "Q" -Exit -.CO vi -(or visual) mode and switch to -.CO ex -mode. -.SS -.SP Line: -Unchanged. -.SP Column: -No longer relevant. -.SP Options: -None. -.SE -.KY R -.IP "[count] R" -Enter input mode, replacing the characters in the current line. -If -.LI count -is specified, the text input is repeatedly input -.LI "count - 1" -more times. -.sp -If the end of the current line is reached, no more characters are -replaced and any further characters input are appended to the line. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY S -.IP "[buffer] [count] S" -Substitute -.LI count -lines. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY T -.IP "[count] T <character>" -Search backward, -.LI count -times, -through the current line for the character -.i after -the specified -.LI <character> . -.sp -The -.CO T -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the character -.i after -the searched-for character. -.SP Options: -None. -.SE -.KY U -.IP "U" -Restore the current line to its state before the cursor last -moved to it. -.SS -.SP Line: -Unchanged. -.SP Column: -The first character in the line. -.SP Options: -None. -.SE -.KY W -.IP "[count] W" -Move forward -.LI count -bigwords. -Move the cursor forward to the beginning of a bigword by repeating the -following algorithm: if the current position is within a bigword or the -character at that position cannot be part of a bigword, move to the first -character of the next bigword. -If no subsequent bigword exists on the current line, -move to the first character of the first bigword on the first following -line that contains a bigword. -.sp -The -.CO W -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -The line containing the word selected. -.SP Column: -The first character of the word selected. -.SP Options: -None. -.SE -.KY X -.IP "[buffer] [count] X" -Delete -.LI count -characters before the cursor. -If the number of characters to be deleted is greater than or equal to -the number of characters to the beginning of the line, all of the -characters before the current cursor position, to the beginning of the -line, are deleted. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the current character minus -.LI count , -or the first character if count is greater than the number of -characters in the line before the cursor. -.SP Options: -None. -.SE -.KY Y -.IP "[buffer] [count] Y" -Copy (or -.QQ yank ) -.LI count -lines into the specified buffer. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged. -.SP Options: -None. -.SE -.KY ZZ -.IP "ZZ" -Write the file and exit -.CO vi . -The file is only written if it has been modified since the last -complete write of the file to any file. -.sp -The -.CO ZZ -command will exit the editor after writing the file, -if there are no further files to edit. -Entering two -.QQ quit -commands (i.e. -.CO wq , -.CO quit , -.CO xit -or -.CO ZZ ) -in a row will override this check and the editor will exit, -ignoring any files that have not yet been edited. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged. -.SP Options: -None. -.SE -.KY [[ -.IP "[count] [[" -Back up -.LI count -section boundaries. -.sp -The -.CO [[ -command is an absolute movement. -The -.CO [[ -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting position is column 0, -in which case it is line oriented. -.sp -This is an error if the movement is past the beginning of the file. -.SS -.SP Line: -Set to the previous line that is -.LI count -section boundaries back, -or the first line of the file if no more section boundaries exist -preceding the current line. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -Affected by the -.OP sections -option. -.SE -.KY ]] -.IP "[count] ]]" -Move forward -.LI count -section boundaries. -.sp -The -.CO ]] -command is an absolute movement. -The -.CO ]] -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting position is column 0, -in which case it is line oriented. -.sp -This is an error if the movement is past the end of the file. -.SS -.SP Line: -Set to the line that is -.LI count -section boundaries forward, -or to the last line of the file if no more section -boundaries exist following the current line. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -Affected by the -.OP sections -option. -.SE -.KY ^ -.IP "\&^" -Move to first nonblank character on the current line. -.sp -The -.CO ^ -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the first nonblank character of the current line. -.SP Options: -None. -.SE -.KY _ -.IP "[count] _" -Move down -.LI "count - 1" -lines, to the first nonblank character. -The -.CO _ -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -line oriented. -.sp -It is not an error to execute the -.CO _ -command when the cursor is on the first character in the line. -.SS -.SP Line: -The current line plus -.LI "count - 1" . -.SP Column: -The first nonblank character in the line. -.SP Options: -None. -.SE -.KY a -.IP "[count] a" -Enter input mode, appending the text after the cursor. -If -.LI count -is specified, the text input is repeatedly input -.LI "count - 1" -more times. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY b -.IP "[count] b" -Move backward -.LI count -words. -Move the cursor backward to the beginning of a word by repeating the -following algorithm: if the current position is at the beginning of a word, -move to the first character of the preceding word. -Otherwise, the current position moves to the first character of the word -at the current position. -If no preceding word exists on the current line, move to the first -character of the last word on the first preceding line that contains -a word. -.sp -The -.CO b -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Set to the line containing the word selected. -.SP Column: -Set to the first character of the word selected. -.SP Options: -None. -.SE -.KY c -.IP "[buffer] [count] c motion" -Change a region of text. -If only part of a single line is affected, then the last character -being changed is marked with a -.QT $ . -Otherwise, the region of text is deleted, and input mode is entered. -.sp -If -.LI count -is specified, it is applied to the -.LI motion . -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY d -.IP "[buffer] [count] d motion" -Delete a region of text. -If -.LI count -is specified, it is applied to the -.LI motion . -.SS -.SP Line: -Set to the line where the region starts. -.SP Column: -Set to the first character in the line after the last character in the -region. -If no such character exists, set to the last character before the region. -.SP Options: -None. -.SE -.KY e -.IP "[count] e" -Move forward -.LI count -end-of-words. -Move the cursor forward to the end of a word by repeating the following -algorithm: if the current position is the end of a word, -move to the last character of the following word. -Otherwise, move to the last character of the word at the current position. -If no succeeding word exists on the current line, move to the last character -of the first word on the next following line that contains a word. -.sp -The -.CO e -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Set to the line containing the word selected. -.SP Column: -Set to the last character of the word selected. -.SP Options: -None. -.SE -.KY f -.IP "[count] f <character>" -Search forward, -.LI count -times, through the rest of the current line for -.LI <character> . -.sp -The -.CO f -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the searched-for character. -.SP Options: -None. -.SE -.KY i -.IP "[count] i" -Enter input mode, inserting the text before the cursor. -If -.LI count -is specified, the text input is repeatedly input -.LI "count - 1" -more times. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY m -.IP "m <character>" -Save the current context (line and column) as -.LI <character> . -The exact position is referred to by -.QT `<character> . -The line is referred to by -.QT '<character> . -.sp -Historically, -.LI <character> -was restricted to lower-case letters only, -.CO nvi -permits the use of any character. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged. -.SP Options: -None. -.SE -.KY o -.IP "[count] o" -Enter input mode, appending text in a new line under the current line. -If -.LI count -is specified, the text input is repeatedly input -.LI "count - 1" -more times. -.sp -Historically, any -.LI count -specified to the -.CO o -command was ignored. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY p -.IP "[buffer] p" -Append text from a buffer. -Text from the buffer (the unnamed buffer by default) is appended -after the current column or, if the buffer is line oriented, -after the current line. -.SS -.SP Line: -Set to the first line appended, if the buffer is line oriented, -otherwise unchanged. -.SP Column: -Set to the first nonblank character of the appended text if the buffer -is line oriented, otherwise, the last character of the appended text. -.SP Options: -None. -.SE -.KY r -.IP "[count] r <character>" -Replace characters. -The next -.LI count -characters in the line are replaced with -.LI <character> . -Replacing characters with -.LI <newline> -characters results in creating new, empty lines into the file. -.sp -If -.LI <character> -is -.LI <escape> , -the command is cancelled. -.SS -.SP Line: -Unchanged unless the replacement character is a -.LI <newline> , -in which case it is set to the current line plus -.LI "count - 1" . -.SP Column: -Set to the last character replaced, -unless the replacement character is a -.LI <newline> , -in which case the cursor is in column 1 of the last line inserted. -.SP Options: -None. -.SE -.KY s -.IP "[buffer] [count] s" -Substitute -.LI count -characters in the current line starting with the current character. -.SS -.SP Line: -Set to the last line upon which characters were entered. -.SP Column: -Set to the last character entered. -.SP Options: -Affected by the -.OP altwerase , -.OP autoindent , -.OP beautify , -.OP showmatch , -.OP ttywerase -and -.OP wrapmargin -options. -.SE -.KY t -.IP "[count] t <character>" -Search forward, -.LI count -times, through the current line for the character immediately -.i before -.LI <character> . -.sp -The -.CO t -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the character -.i before -the searched-for character. -.SP Options: -None. -.SE -.KY u -.IP "u" -Undo the last change made to the file. -If repeated, the -.CO u -command alternates between these two states, and is its own inverse. -When used after an insert that inserted text on more than one line, -the lines are saved in the numeric buffers. -.sp -The -.CO \&. -command, when used immediately after the -.CO u -command, causes the change log to be rolled forward or backward, -depending on the action of the -.CO u -command. -.SS -.SP Line: -Set to the position of the first line changed, if the reversal affects -only one line or represents an addition or change; otherwise, the line -preceding the deleted text. -.SP Column: -Set to the cursor position before the change was made. -.SP Options: -None. -.SE -.KY w -.IP "[count] w" -Move forward -.LI count -words. -Move the cursor forward to the beginning of a word by repeating the -following algorithm: if the current position is at the -beginning of a word, move to the first character of the next word. -If no subsequent word exists on the current line, move to the first -character of the first word on the first following line that contains -a word. -.sp -The -.CO w -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -.SS -.SP Line: -Set to the line containing the word selected. -.SP Column: -Set to the first character of the word selected. -.SP Options: -None. -.SE -.KY x -.IP "[buffer] [count] x" -Delete -.LI count -characters. -The deletion is at the current character position. -If the number of characters to be deleted is greater than or equal to -the number of characters to the end of the line, all of the characters -from the current cursor position to the end of the line are deleted. -.SS -.SP Line: -Unchanged. -.SP Column: -Unchanged unless the last character in the line is deleted and the cursor -is not already on the first character in the line, in which case it is -set to the previous character. -.SP Options: -None. -.SE -.KY y -.IP "[buffer] [count] y motion" -Copy (or -.QQ yank ) -a text region specified by the -.LI count -and motion into a buffer. -If -.LI count -is specified, it is applied to the -.LI motion . -.SS -.SP Line: -Unchanged, unless the region covers more than a single line, -in which case it is set to the line where the region starts. -.SP Column: -Unchanged, unless the region covers more than a single line, -in which case it is set to the character were the region starts. -.SP Options: -None. -.SE -.KY z -.IP "[count1] z [count2] type" -Redraw the screen with a window -.LI count2 -lines long, with line -.LI count1 -placed as specified by the -.LI type -character. -If -.LI count1 -is not specified, it defaults to the current line. -If -.LI count2 -is not specified, it defaults to the current window size. -.sp -The following -.LI type -characters may be used: -.SS -.SP + -If -.LI count1 -is specified, place the line -.LI count1 -at the top of the screen. -Otherwise, display the screen after the current screen, similarly to the -.CO <control-F> -command. -.SP <carriage-return> -Place the line -.LI count1 -at the top of the screen. -.SP \&. -Place the line -.LI count1 -in the center of the screen. -.SP \- -Place the line -.LI count1 -at the bottom of the screen. -.SP ^ -If -.LI count1 -is specified, place the line that is at the top of the screen -when -.LI count1 -is at the bottom of the screen, at the bottom of the screen, -i.e. display the screen before the screen before -.LI count1 . -Otherwise, display the screen before the current screen, similarly to the -.CO <control-B> -command. -.SE -.SS -.SP Line: -Set to -.LI count1 -unless -.LI count1 -is not specified and the -.LI type -character was either -.QT ^ -or -.QT + , -in which case it is set to the line before the first line on the -previous screen or the line after the last line on the previous -screen, respectively. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -None. -.SE -.KY { -.IP "[count] {" -Move backward -.LI count -paragraphs. -.sp -The -.CO { -command is an absolute movement. -The -.CO { -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting character is the first -character on its line, in which case it is line oriented. -.SS -.SP Line: -Set to the line containing the beginning of the previous paragraph. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -Affected by the -.OP paragraph -option. -.SE -.KY | -.IP "[count] |" -Move to a specific -.i column -position on the current line. -.sp -The -.CO | -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented. -It is an error to use the -.CO | -command as a motion component and for the cursor not to move. -.SS -.SP Line: -Unchanged. -.SP Column: -Set to the character occupying the column position identified by -.LI count , -if the position exists in the line. -If the column length of the current line is less than -.LI count , -the cursor is moved to the last character in the line. -.SP Options: -None. -.SE -.KY } -.IP "[count] }" -Move forward -.LI count -paragraphs. -.sp -The -.CO } -command is an absolute movement. -The -.CO } -command may be used as the motion component of other -.CO vi -commands, in which case any text copied into a buffer is -character oriented, unless the starting character is at or -before any nonblank characters in its line, -in which case it is line oriented. -.SS -.SP Line: -Set to the line containing the beginning of the next paragraph. -.SP Column: -Set to the first nonblank character in the line. -.SP Options: -Affected by the -.OP paragraph -option. -.SE -.KY ~ -.IP "[count] ~" -Reverse the case of the next -.LI count -character(s). -This is the historic semantic for the -.CO ~ -command and it is only in effect if the -.OP tildeop -option is not set. -.sp -Lowercase alphabetic characters are changed to uppercase, -and uppercase characters are changed to lowercase. -No other characters are affected. -.sp -Historically, the -.CO ~ -command did not take an associated count, nor did it move past the -end of the current line. -As it had no associated motion it was difficult to change the case -of large blocks of text. -In -.CO nvi , -if the cursor is on the last character of a line, and there are -more lines in the file, the cursor moves to the next line. -.sp -It is not an error to specify a count larger than the number of -characters between the cursor and the end of the file. -.SS -.SP Line: -Set to the line of the character after -.LI count -characters, or, end of file. -.SP Column: -Set to the character after -.LI count -characters, or, end-of-file. -.SP Options: -Affected by the -.OP tildeop -option. -.SE -.KY ~ -.IP "[count] ~ motion" -Reverse the case of the characters in a text region specified by the -.LI count -and -.LI motion . -Only in effect if the -.OP tildeop -option is set. -.sp -Lowercase characters are changed to uppercase, -and uppercase characters are changed to lowercase. -No other characters are affected. -.SS -.SP Line: -Set to the line of the character after the last character in the region. -.SP Column: -Set to the character after the last character in the region. -.SP Options: -Affected by the -.OP tildeop -option. -.SE -.KY <interrupt> -.IP "<interrupt>" -Interrupt the current operation. -Many of the potentially long-running -.CO vi -commands may be interrupted using the terminal interrupt character. -These operations include searches, file reading and writing, filter -operations and map character expansion. -Interrupts are also enabled when running commands outside of -.CO vi . -.sp -If the -.LI <interrupt> -character is used to interrupt while entering an -.CO ex -command, the command is aborted, the cursor returns to its previous -position, and -.CO vi -remains in command mode. -.sp -Generally, if the -.LI <interrupt> -character is used to interrupt any -operation, any changes made before the interrupt are left in place. -.SS -.SP Line: -Dependent on the operation being interrupted. -.SP Column: -Dependent on the operation being interrupted. -.SP Options: -None. -.SH 1 "Vi Text Input Commands" -.pp -The following section describes the commands available in the text -input mode of the -.CO vi -editor. -.pp -Historically, -.CO vi -implementations only permitted the characters inserted on the current -line to be erased. -In addition, only the -.LI <control-D> -erase character and the -.QT 0<control-D> -and -.QT ^<control-D> -erase strings could erase autoindent characters. -This implementation permits erasure to continue past the beginning -of the current line, and back to where text input mode was entered. -In addition, autoindent characters may be erased using the standard -erase characters. -For the line and word erase characters, reaching the autoindent -characters forms a -.QQ soft -boundary, denoting the end of the current word or line erase. -Repeating the word or line erase key will erase the autoindent characters. -.pp -Historically, -.CO vi -always used -.LI <control-H> -and -.LI <control-W> -as character and word erase characters, respectively, regardless of -the current terminal settings. -This implementation accepts, in addition to these two characters, -the current terminal characters for those operations. -.KY <nul> -.IP "<nul>" -If the first character of the input is a -.LI <nul> , -the previous input is replayed, as if just entered. -.KY <control-D> -.IP "<control-D>" -If the previous character on the line was an autoindent character, -erase it. -Otherwise, if the user is entering the first character in the line, -.LI <control-D> -is ignored. -Otherwise, a literal -.LI <control-D> -character is entered. -.KY ^<control-D> -.IP "^<control-D>" -If the previous character on the line was an autoindent character, -erase all of the autoindent characters on the line. -In addition, the autoindent level is reset to 0. -.KY 0<control-D> -.IP "0<control-D>" -If the previous character on the line was an autoindent character, -erase all of the autoindent characters on the line. -.KY <control-T> -.IP "<control-T>" -Insert sufficient -.LI <tab> -and -.LI <space> -characters to move the cursor forward to a column immediately -after the next column which is an even multiple of the -.OP shiftwidth -option. -.sp -Historically, -.CO vi -did not permit the -.LI <control-T> -command to be used unless the cursor was at the first column of a new -line or it was preceded only by autoindent characters. -.CO Nvi -permits it to be used at any time during insert mode. -.KY <erase> -.IP <erase> -.KY <control-H> -.Ip <control-H> -Erase the last character. -.KY "<literal next>" -.IP "<literal next>" -Quote the next character. -The next character will not be mapped (see the -.CO map -command for more information) -or interpreted specially. -A carat -.PQ ^ -character will be displayed immediately as a placeholder, -but will be replaced by the next character. -.KY <escape> -.IP <escape> -Resolve all text input into the file, and return to command mode. -.KY "<line erase>" -.IP "<line erase>" -Erase the current line. -.KY "<control-W>" -.IP "<control-W>" -.KY "<word erase>" -.Ip "<word erase>" -Erase the last word. -The definition of word is dependent on the -.OP altwerase -and -.OP ttywerase -options. -.KY "<control-X>" -.IP "<control-X>[0-9A-Fa-f]*" -Insert a character with the specified hexadecimal value into the text. -.KY <interrupt> -.IP "<interrupt>" -Interrupt text input mode, returning to command mode. -If the -.LI <interrupt> -character is used to interrupt inserting text into the file, -it is as if the -.LI <escape> -character was used; all text input up to the interruption is -resolved into the file. diff --git a/usr.bin/vi/USD.doc/vi.ref/vi.ref b/usr.bin/vi/USD.doc/vi.ref/vi.ref deleted file mode 100644 index 5058cc780dd..00000000000 --- a/usr.bin/vi/USD.doc/vi.ref/vi.ref +++ /dev/null @@ -1,1270 +0,0 @@ -.\" Copyright (c) 1994 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)vi.ref 8.52 (Berkeley) 8/13/94 -.\" -.\" -.so ref.so -.tp -.(l C -.ps 12 -.ft B -Ex/Vi Reference Manual -.ft -.ps -.sp -.i "Keith Bostic" -.sp -Computer Science Division -Department of Electrical Engineering and Computer Science -University of California, Berkeley -Berkeley, California 94720 -.sp 1 -\*(td -.sp 3 -.i Abstract -.sp -.)l -.(q -.pp -This document is the reference guide for the 4.4BSD -implementations of -.EV nex nvi , -which are reimplementations of the historic Berkeley -.EV ex vi -editors. -.)q -.sp 3 -.(l C -.i Acknowledgements -.)l -.sp -.(q -.pp -Bruce Englar encouraged the early development of the historic -.EV ex vi -editor. -Peter Kessler helped bring sanity to version 2's command layout. -Bill Joy wrote versions 1 and 2.0 through 2.7, -and created the framework that users see in the present editor. -Mark Horton added macros and other features and made -.EV ex vi -work on a large number of terminals and Unix systems. -.pp -.CO Nvi -is originally derived from software contributed to the University of -California, Berkeley by Steve Kirkendall, the author of the -.CO vi -clone -.CO elvis . -.pp -IEEE Standard Portable Operating System Interface for Computer -Environments (POSIX) 1003.2 style Regular Expression support was -done by Henry Spencer. -.pp -The curses library was originally done by Ken Arnold. -Scrolling and reworking for -.CO nvi -was done by Elan Amir. -.pp -The Institute of Electrical and Electronics Engineers has -given us permission to reprint portions of their documentation. -Portions of this document are reprinted and reproduced from -IEEE Std 1003.2-1992, IEEE Standard Portable Operating -System Interface for Computer Environments (POSIX), -copyright 1992 by the Institute of Electrical and Electronics -Engineers, Inc. -.pp -The financial support of UUNET Communications Services is gratefully -acknowledged. -.)q -.sy echo -n >index -.oh 'Nvi/Nex Reference''USD:13-%' -.eh 'USD:13-%''Nvi/Nex Reference' -.bp 3 -.SH 1 Description -.pp -.CO Vi -is a screen oriented text editor. -.CO Ex -is a line-oriented text editor. -.CO Ex -and -.CO vi -are different interfaces to the same program, -and it is possible to switch back and forth during an edit session. -.CO View -is the equivalent of using the -.b \-R -(read-only) option of -.CO vi . -.pp -This reference manual is the one provided with the -.EV nex nvi -versions of the -.EV ex vi -text editors. -.EV Nex nvi -are intended as bug-for-bug compatible replacements for the original -Fourth Berkeley Software Distribution (4BSD) -.EV ex vi -programs. -This reference manual is accompanied by a traditional-style manual page. -That manual page describes the functionality found in -.EV ex vi -in far less detail than the description here. -In addition, it describes the system interface to -.EV ex vi , -e.g. command line options, session recovery, signals, -environmental variables, and similar things. -.pp -This reference is intended for users already familiar with -.EV ex vi . -Anyone else should almost certainly read a good tutorial on the -editor first. -If you are in an unfamiliar environment, -and you absolutely have to get work done immediately, -see the section entitled -.QB "Fast Startup" -in the manual page. -It is probably enough to get you started. -.pp -There are a few features in -.EV nex nvi -that are not found in historic versions of -.EV ex vi . -Some of the more interesting of those features are briefly described -in the section entitled -.QB "Additional Features" -near the end of this document. -For the rest of this document, -.EV nex nvi -is used only when it is necessary to distinguish it from the historic -implementations of -.EV ex vi . -.pp -Future versions of this software will be periodically made available -by anonymous ftp, and can be retrieved from -.LI ftp.cs.berkeley.edu , -in the directory -.LI ucb/4bsd . -.SH 1 "Startup Information" -.pp -.EV Ex vi -interprets one of two possible environmental variables and reads up to -three of five possible files during startup. -The variables and files are expected to contain -.CO ex -commands, not -.CO vi -commands. -In addition, they are interpreted -.i before -the file to be edited is read, and therefore many -.CO ex -commands may not be used. -Generally, any command that requires output to the screen or that -needs a file upon which to operate, will cause an error if included -in a startup file or environmental variable. -.pp -Because the -.CO ex -command set supported by -.EV nex nvi -is a superset of the command set supported by most historical -implementations of -.CO ex , -.EV nex nvi -can use the startup files created for the historical implementations, -but the converse may not be true. -.pp -If the -.b \-s -(the historic \- option) -is specified, or if standard input is redirected from a file, -all environmental variables and startup files are ignored. -.pp -Otherwise, startup files and environmental variables are handled -in the following order: -.np -The file -.LI /etc/vi.exrc -is read, -as long as it is owned by root or the effective user ID of the user. -.np -The environmental variable -.LI NEXINIT -(or the variable -.LI EXINIT , -if -.LI NEXINIT -is not set) is interpreted. -.np -If neither -.LI NEXINIT -or -.LI EXINIT -was set, and the -.LI HOME -environmental variable is set, the file -.LI $HOME/.nexrc -(or the file -.LI $HOME/.exrc , -if -.LI $HOME/.nexrc -does not exist) is read, -as long as the effective user ID of the user is root or is the same as -the owner of the file. -.np -If the -.OP exrc -option was turned on by one of the previous startup information -sources, the file -.LI \&.nexrc -(or the file -.LI \&.exrc , -if -.LI \&.nexrc -does not exist) is read, as long as the effective user ID of the user -is the same as the owner of the file. -.pp -No startup file is read if it is writable by anyone other than its owner. -.pp -It is not an error for any of the startup environmental variables or files -not to exist. -.pp -Once all environmental variables are interpreted, -and all startup files are read, -the first file to be edited is read in (or a temporary file is created). -Then, any commands specified using the -.b \-c -option are executed, in the context of that file. -.SH 1 Recovery -.pp -There is no recovery program for -.EV nex nvi , -nor does -.EV nex nvi -run setuid. -Recovery files are created readable and writable by the owner only. -Users may recover any file which they can read, -and the superuser may recover any edit session. -.pp -Edit sessions are backed by files in the directory named by the -.OP recdir -option (the directory -.LI /var/tmp/vi.recover -by default), and are named -.QC vi.XXXXXX , -where -.QC XXXXXX -is a number related to the process ID. -When a file is first modified, -a second recovery file containing an email message for the user is created, -and is named -.QC recover.XXXXXX , -where, again, -.QC XXXXXX -is associated with the process ID. -Both files are removed at the end of a normal edit session, -but will remain if the edit session is abnormally terminated -or the user runs the -.CO ex -.CO preserve -command. -.pp -The -.OP recdir -option may be set in either the user's or system's startup information, -changing the recovery directory. -(Note, however, that if a memory based file system is used as the backup -directory, each system reboot will delete all of the recovery files! -The same caution applies to directories such as -.LI /tmp -which are cleared of their contents by a system reboot, or -.LI /usr/tmp -which is periodically cleared of old files on many systems.) -.pp -The recovery directory should be owned by root, or at least by a pseudo-user. -In addition, if directory -.QQ sticky-bit -semantics are available, the directory should have the sticky-bit -set so that files may only be removed by their owners. -The recovery directory must be read, write, and executable by any user, -i.e. mode 1777. -.pp -If the recovery directory does not exist, -.EV ex vi -will attempt to create it. -This can result in the recovery directory being owned by a normal user, -which means that that user will be able to remove other user's recovery -and backup files. -This is annoying, but is not a security issue as the user cannot -otherwise access or modify the files. -.pp -The recovery file has all of the necessary information in it to enable the -user to recover the edit session. -In addition, it has all of the necessary email headers for -.XR sendmail 8 . -When the system is rebooted, all of the files in -.LI /var/tmp/vi.recover -named -.QC recover.XXXXXX -should be sent to their owners, by email, using the -.b \-t -option of -.CO sendmail -(or a similar mechanism in other mailers). -If -.EV ex vi -receives a hangup (SIGHUP) signal, or the user executes the -.CO ex -.CO preserve -command, -.EV ex vi -will automatically email the recovery information to the user. -.pp -If your system does not have the -.CO sendmail -utility (or a mailer program which supports its interface) -the source file -.LI nvi/common/recover.c -will have to be modified to use your local mail delivery programs. -Note, if -.EV nex nvi -is changed to use another mailer, -it is important to remember that the owner of the file given to -the mailer is the -.EV nex nvi -user, so nothing in the file should be trusted as it may have been -modified in an effort to compromise the system. -.pp -Finally, the owner execute bit is set on backup files when they are -created, and unset when they are first modified, e.g. backup files -that have no associated email recovery file will have this bit set. -(There is also a small window where empty files can be created and -not yet have this bit set. -This is due to the method in which the files are created.) -Such files should be deleted when the system reboots. -.pp -A simple way to do this cleanup is to insert the following Bourne -shell script into your -.LI /etc/rc.local -(or other startup) file. -The script should work with the historic Bourne shell, -a POSIX 1003.2 shell or the Korn shell. -(A copy of this script is included as -.LI nvi/install/recover.script -in the -.EV nex nvi -distribution.) -.sp -.(b -.ft C -.so ../../install/recover.script -.ft R -.)b -.sp -.pp -If you are not using the default value for the -.OP recdir -option, be sure to substitute the value you're using for the -.LI RECDIR -value in the recovery script. -.pp -If the path of your system's -.CO sendmail -program (or whatever mailer you're using) is not -.LI /usr/lib/sendmail , -be sure to substitute the correct pathname for the -.LI SENDMAIL -value in the recovery script. -Consult the manual page for details on recovering preserved or -aborted editing sessions. -.SH 1 "Sizing the Screen" -.pp -The size of the screen can be set in a number of ways. -.EV Ex vi -takes the following steps until values are obtained for both the -number of rows and number of columns in the screen. -.np -If the environmental variable -.LI LINES -exists, -it is used to specify the number of rows in the screen. -.np -If the environmental variable -.LI COLUMNS -exists, -it is used to specify the number of columns in the screen. -.np -The TIOCGWINSZ -.XR ioctl 2 -is attempted on the standard error file descriptor. -.np -The termcap entry (or terminfo entry on System V machines) -is checked for the -.QQ li -entry (rows) and the -.QQ co -entry (columns). -.np -The number of rows is set to 24, and the number of columns is set to 80. -.pp -If a window change size signal (SIGWINCH) is received, -the new window size is retrieved using the TIOCGWINSZ -.XR ioctl 2 -call, and all other information is ignored. -.SH 1 "Character Display" -.pp -In both -.CO ex -and -.CO vi -printable characters as defined by -.XR isprint 3 -are displayed using the local character set. -.pp -Non-printable characters, for which -.XR iscntrl 3 -returns true, and which are less than octal \e076, -are displayed as the string -.QT ^<character> , -where -.LI <character> -is the character that is the original character's value offset from the -.QT @ -character. -For example, the octal character \e001 is displayed as -.QT ^A . -If -.XR iscntrl 3 -returns true for the octal character \e177, -it is displayed as the string -.QT ^? . -All other characters are displayed as either hexadecimal values, -in the form -.QT "0x<high-halfbyte> ... 0x<low-halfbyte>" , -or as octal values, in the form -.QT "\e<high-one-or-two-bits> ... \e<low-three-bits>" . -The display of unknown characters is based on the value of the -.OP octal -option. -.pp -In -.CO vi -command mode, the cursor is always positioned on the last column of -characters which take up more than one column on the screen. -In -.CO vi -text input mode, the cursor is positioned on the first column of -characters which take up more than one column on the screen. -.SH 1 "Multiple Screens" -.pp -.CO Nvi -supports multiple screens by dividing the window into regions. -It also supports stacks of screens by permitting the user to change -the set of screens that are currently displayed. -.pp -The command -.CO split -divides the current screen into two regions of approximately equal -size. -If a list of files are specified as arguments to the -.CO split -command, the list of files to be edited is initialized as if the -.CO next -command had been used. -If no files are specified, the new screen will begin by editing the same -file as the previous screen. -.pp -When more than one screen is editing a file, changes in any screen are -reflected in all other screens editing the same file. -Exiting any screen without saving any changes (or explicitly discarding -them) is permitted until the last screen editing the file is exited. -.pp -The -.CO resize -command permits resizing of individual screens. -Screens may be grown, shrunk or set to an absolute number of rows. -.pp -The -.CO ^W -command is used to switch between screens. -Each -.CO ^W -moves to the next lower screen in the window, or to the first screen -in the window if there are no lower screens. -.pp -The -.CO bg -command -.QQ backgrounds -the current screen. -The screen disappears from the window, -and the rows it occupied are taken over by a neighboring screen. -It is an error to attempt to background the only screen in the window. -.pp -The -.CO "display screens" -command displays the names of the files associated with the current -backgrounded screens in the window. -.pp -The -.CO "fg [file]" -command -.QQ foregrounds -the first screen in the list of backgrounded screens that is -associated with its argument. -If no file argument is specified, the first screen on the list is -foregrounded. -Foregrounding consists of backgrounding the current screen, -and replacing its space in the window with the foregrounded screen. -.pp -If the last screen in the window is exited, and there are backgrounded -screens, the first screen on the list of backgrounded screens takes over -the window. -.SH 1 "Regular Expressions and Replacement Strings" -.pp -Regular expressions are used in line addresses, -as the first part of the -.CO ex -.CO substitute , -.CO global , -and -.CO vglobal -commands, and in search patterns. -.pp -The regular expressions supported by -.EV ex vi -are, by default, the Basic Regular Expressions (BRE's) described in the -IEEE POSIX Standard 1003.2. -The -.OP extended -option causes all regular expressions to be interpreted as the Extended -Regular Expressions (ERE's) described by the same standard. -(See -.XR re_format 7 -for more information.) -Generally speaking, BRE's are the Regular Expressions found in -.XR ed 1 -and -.XR grep 1 , -and ERE's are the Regular Expressions found in -.XR egrep 1 . -.pp -The following is not intended to provide a description of Regular -Expressions. -The information here only describes strings and characters which -have special meanings in the -.EV ex vi -version of RE's, -or options which change the meanings of characters that normally -have special meanings in RE's. -.np -An empty RE (e.g. -.QT // -or -.QT ?? -is equivalent to the last RE used. -.np -The construct -.QT \e< -matches the beginning of a word. -.np -The construct -.QT \e> -matches the end of a word. -.np -The character -.QT ~ -matches the replacement part of the last -.CO substitute -command. -.pp -When the -.OP magic -option is -.i not -set, the only characters with special meanings are a -.QT ^ -character at the beginning of an RE, a -.QT $ -character at the end of an RE, and the escaping character -.QT \e . -The characters -.QT \&. , -.QT * , -.QT [ -and -.QT ~ -are treated as ordinary characters unless preceded by a -.QT \e ; -when preceded by a -.QT \e -they regain their special meaning. -.pp -Replacement strings are the second part of a -.CO substitute -command. -.pp -The character -.QT & -(or -.QT \e& -if the -.OP magic -option is -.i not -set) in the replacement string stands for the text matched by the RE -that is being replaced. -The character -.QT ~ -(or -.QT \e~ -if the -.OP magic -option is -.i not -set) stands for the replacement part of the previous -.CO substitute -command. -It is only valid after a -.CO substitute -command has been performed. -.pp -The string -.QT \e# , -where -.QT # -is an integer value from 1 to 9, stands for the text matched by -the portion of the RE enclosed in the -.QT # 'th -set of escaped parentheses, e.g. -.QT \e( -and -.QT \e) . -For example, -.QT "s/abc\e(.*\e)def/\e1/" -deletes the strings -.QT abc -and -.QT def -from the matched pattern. -.pp -The strings -.QT \el , -.QT \eu , -.QT \eL -and -.QT \eU -can be used to modify the case of elements in the replacement string. -The string -.QT \el -causes the next character to be converted to lowercase; -the string -.QT \eu -behaves similarly, but converts to uppercase -(e.g. -.LI s/abc/\eU&/ -replaces the string -.LI abc -with -.LI ABC ). -The strings -.QT \eL -causes characters up to the end of the string or the next occurrence -of the strings -.QT \ee -or -.QT \eE -to be converted to lowercase; -the string -.QT \eU -behaves similarly, but converts to uppercase. -.pp -If the entire replacement pattern is -.QT % , -then the last replacement pattern is used again. -.pp -In -.CO vi , -inserting a -.LI <control-M> -into the replacement string will cause -the matched line to be split into two lines at that point. -(The -.LI <control-M> -will be discarded.) -.SH 1 "General Editor Description" -.pp -When -.CO ex -or -.CO vi -are executed, -the text of a file is read (or a temporary file is created), -and then all editing changes happen within the context of the -copy of the file. -.i "No changes affect the actual file until the file is written out" , -either using a write command or another command which is affected by the -.OP autowrite -option. -.pp -All files are locked (using the -.XR flock 2 -or -.XR fcntl 2 -interfaces) during the edit session, -to avoid inadvertently making modifications to multiple copies of the file. -If a lock cannot be obtained for a file because it is locked by another -process, the edit session is read-only (as if the -.OP readonly -option or the -.b \-R -flag had been specified). -If a lock cannot be obtained for other reasons, the edit session will -continue, but the file status information -(see the -.CO <control-G> -command) will reflect this fact. -.pp -Both -.CO ex -and -.CO vi -are modeful editors, i.e. they have two modes, -.QQ command -mode and -.QQ "text input" -mode. -The former is intended to permit you to enter commands which modifies -already existing text. -The latter is intended to permit you to enter new text. -When -.CO ex -first starts running, it is in command mode, and usually displays a prompt -(see the -.OP prompt -option for more information). -The prompt is a single colon -.PQ : -character. -There are three commands that switch -.CO ex -into text input mode: -.CO append , -.CO change -and -.CO insert . -Once in input mode, entering a line containing only a single period -.PQ \&. -terminates text input mode and returns to command mode, -where the prompt is redisplayed. -.pp -When -.CO vi -first starts running, it is in command mode as well. -There are eleven commands that switch -.CO vi -into text input mode: -.CO A , -.CO a , -.CO C , -.CO c , -.CO I , -.CO i , -.CO O , -.CO o , -.CO R , -.CO S -and -.CO s . -Once in input mode, entering an -.LI <escape> -character terminates text input mode and returns to command mode. -.pp -The following words have special meanings in both the -.CO ex -and -.CO vi -command descriptions: -.KY <interrupt> -.IP <interrupt> -The interrupt character is used to interrupt the current operation. -Normally -.LI <control-C> , -whatever character is set for the current terminal is used. -.KY "<literal next>" -.IP "<literal next>" -The literal next character is used to escape the subsequent character -from any special meaning. -This character is always -.LI <control-V> . -If the terminal is not set up to do XON/XOFF flow control, -then -.LI <control-Q> -is used to mean literal next as well. -.KY "current pathname" -.IP "current pathname" -The pathname of the file currently being edited by vi. -When the percent character -.PQ % -appears in a file name entered as part of an -.CO ex -command argument, it is replaced by the current pathname. -(The -.QT % -character can be escaped by preceding it with a backslash.) -.KY "alternate pathname" -.IP "alternate pathname" -The name of the last file name mentioned in an -.CO ex -command, or, -the previous current pathname if the last file mentioned -becomes the current file. -When the hash mark character -.PQ # -appears in a file name entered as part of an -.CO ex -command argument, it is replaced by the alternate pathname. -(The -.QT # -character can be escaped by preceding it with a backslash.) -.KY buffer -.IP buffer -One of a number of named areas for saving copies of text. -Commands that change or delete text can save the changed or deleted -text into a specific buffer, for later use, if the command allows -it (i.e. the -.CO ex -.CO change -command cannot save the changed text in a named buffer). -Buffers are named with a single character, preceded by a double quote, -e.g. -.LI """<character>" . -Historic implementations of -.EV ex vi -limited -.LI <character> -to the alphanumeric characters; -.EV nex nvi -permits the use of any character. -.sp -Buffers named by uppercase characters are the same as buffers -named by lowercase characters, e.g. the buffer named by the -English character -.QT A -is the same as the buffer named by the character -.QT a , -with the exception that, if the buffer contents are being changed (as -with a text deletion or -.CO vi -.CO change -command), the text is -.i appended -to the buffer, instead of replacing the current contents. -.sp -The buffers named by the numeric characters (in English, -.QT 1 -through -.QT 9 ), -are special, in that if at least one line is changed or deleted in -the file, -(or a command changes or deletes a region that crosses a line boundary) -a copy of the text is placed into the numeric buffer -.QT 1 , -regardless of the user specifying another buffer in which to save it. -Before this copy is done, the previous contents of buffer -.QT 1 -are moved into buffer -.QT 2 , -.QT 2 -into buffer -.QT 3 , -and so on. -The contents of buffer -.QT 9 -are discarded. -In -.CO vi , -text may be explicitly stored into the numeric buffers. -In this case, the buffer rotation described above occurs before the -replacement of the buffer's contents. -(Text cannot be explicitly stored into the numeric buffers in -.CO ex -because of ambiguities that this would cause in the -.CO ex -command syntax.) -.sp -When a -.CO vi -command synopsis shows both a -.LI [buffer] -and a -.LI [count] , -they may be presented in any order. -.sp -Finally, all buffers are either -.QQ line -or -.QQ character -oriented. -All -.CO ex -commands which store text into buffers are line oriented. -Some -.CO vi -commands which store text into buffers are line oriented, -and some are character oriented; the description for each applicable -.CO vi -command notes whether text copied into buffers using the command -is line or character oriented. -In addition, the -.CO vi -command -.CO "display buffers" -displays the current orientation for each buffer. -Generally, the only importance attached to this orientation is that -if the buffer is subsequently inserted into the text, line oriented -buffers create new lines for each of the lines they contain, and -character oriented buffers create new lines for any lines -.i other -than the first and last lines they contain. -The first and last lines are inserted into the text at the current -cursor position, becoming part of the current line. -If there is more than one line in the buffer, however, the current -line itself will be split. -.KY "unnamed buffer" -.IP "unnamed buffer" -The unnamed buffer is a text storage area which is used by commands -that take a buffer as an argument, when no buffer is specified by -the user. -There is no way to explicitly reference this buffer. -.oh 'Nvi/Nex Reference (Vi Commands)''USD:13-%' -.eh 'USD:13-%''Nvi/Nex Reference (Vi Commands)' -.so vi.cmd.roff -.oh 'Nvi/Nex Reference''USD:13-%' -.eh 'USD:13-%''Nvi/Nex Reference' -.SH 1 "Ex Addressing" -.pp -Addressing in -.CO ex -(and when -.CO ex -commands are executed from -.CO vi ) -relates to the current line. -In general, the current line is the last line affected by a command. -The exact effect on the current line is discussed under the description -of each command. -When the file contains no lines, the current line is zero. -.pp -Addresses are constructed by one or more of the following methods: -.np -The address -.QT \&. -refers to the current line. -.np -The address -.QT $ -refers to the last line of the file. -.np -The address -.QT N , -where -.LI N -is a positive number, refers to the N-th line of the file. -.np -The address -.QT '<character> -or -.QT `<character> -refers to the line marked with the name -.LI <character> . -(See the -.CO k -or -.CO m -commands for more information on how to mark lines.) -.np -A regular expression (RE) enclosed by slashes -.PQ / -is an address, -and it refers to the first line found by searching forward from the line -.i after -the current line toward the end of the file, and stopping at the -first line containing a string matching the RE. -(The trailing slash can be omitted at the end of the command line.) -.sp -If no RE is specified, i.e. the pattern is -.QT // , -the last RE used in any command is used in the search. -.sp -If the -.OP extended -option is set, the RE is handled as an extended RE, not a basic RE. -If the -.OP wrapscan -option is set, the search wraps around to the beginning of the file -and continues up to and including the current line, so that the entire -file is searched. -.sp -The form -.QT \e/ -is accepted for historic reasons, -and is identical to -.QT // . -.np -An RE enclosed in question marks -.PQ ? -addresses the first line found by searching backward from the line -.i preceding -the current line, toward the beginning of the file and stopping at the -first line containing a string matching the RE. -(The trailing question mark can be omitted at the end of a command line.) -.sp -If no RE is specified, i.e. the pattern is -.QT ?? , -the last RE used in any command is used in the search. -.sp -If the -.OP extended -option is set, the RE is handled as an extended RE, not a basic RE. -If the -.OP wrapscan -option is set, the search wraps around from the beginning of the file to -the end of the file and continues up to and including the current line, -so that the entire file is searched. -.sp -The form -.QT \e? -is accepted for historic reasons, and is identical to -.QT ?? . -.np -An address followed by a plus sign -.PQ + -or a minus sign -.PQ - -followed by a number is an offset address and refers to the address -plus (or minus) the indicated number of lines. -If the address is omitted, the addition or subtraction is done with -respect to the current line. -.np -An address of -.QT + -or -.QT \- -followed by a number is an offset from the current line. -For example, -.QT \-5 -is the same as -.QT \&.\-5 . -.np -An address ending with -.QT + -or -.QT - -has 1 added to or subtracted from the address, respectively. -As a consequence of this rule and of the previous rule, the address -.QT \- -refers to the line preceding the current line. -Moreover, trailing -.QT + -and -.QT \- -characters have a cumulative effect. -For example, -.QT ++\-++ -refers to the current line plus 3. -.np -A percent sign -.PQ % -is equivalent to the address range -.QT 1,$ . -.pp -.CO Ex -commands require zero, one, or two addresses. -It is an error to specify an address to a command which requires zero -addresses. -.pp -If the user provides more than the expected number of addresses to any -.CO ex -command, the first addresses specified are discarded. -For example, -.QT 1,2,3,5 print -prints lines 3 through 5, because the -.CO print -command only takes two addresses. -.pp -The addresses in a range are separated from each other by a comma -.PQ , -or a semicolon -.PQ ; . -In the latter case, the current line -.PQ \&. -is set to the first address, and only then is the second address calculated. -This feature can be used to determine the starting line for forward and -backward searches (see rules (5) and (6) above). -The second address of any two-address sequence corresponds to a line that -follows, in the file, the line corresponding to the first address. -The first address must be less than or equal to the second address. -The first address must be greater than or equal to the first line of the -file, and the last address must be less than or equal to the last line -of the file. -.oh 'Nvi/Nex Reference (Ex Commands)''USD:13-%' -.eh 'USD:13-%''Nvi/Nex Reference (Ex Commands)' -.so ex.cmd.roff -.oh 'Nvi/Nex Reference''USD:13-%' -.eh 'USD:13-%''Nvi/Nex Reference' -.so set.opt.roff -.SH 1 "Additional Features in Nex/Nvi" -.pp -There are a few features in -.EV nex nvi -that are not found in historic versions of -.EV ex vi . -Some of the more interesting of those features are as follows: -.IP "8-bit clean data, large lines, files" -.EV Nex nvi -will edit any format file. -Line lengths are limited by available memory, -and file sizes are limited by available disk space. -The -.CO vi -text input mode command -.CO <control-X> -can insert any possible character value into the text. -.IP "Split screens" -The -.CO split -command divides the screen into multiple editing regions. -The -.CO <control-W> -command rotates between the foreground screens. -The -.CO resize -command can be used to grow or shrink a particular screen. -.IP "Background and foreground screens" -The -.CO bg -command backgrounds the current screen, and the -.CO fg -command foregrounds backgrounded screens. -The -.CO display -command can be used to list the background screens. -.\".IP "Shell screens" -.\"The -.\".CO ":sc[ript] [file ...]" -.\"command runs a shell in the screen. -.\"Editing is unchanged, with the exception that a \fC<carriage-return>\fP -.\"enters the current line (stripped of any prompt) as input to the -.\"shell. -.IP "Tag stacks" -Tags are now maintained in a stack. -The -.CO <control-T> -command returns to the previous tag location. -The -.CO tagpop -command returns to the most recent tag location by default, or, -optionally to a specific tag number in the tag stack, -or the most recent tag from a specified file. -The -.CO display -command can be used to list the tags stack. -The -.CO tagtop -command returns to the top of the tag stack. -.IP "New displays" -The -.CO display -command can be used to display the current buffers, the backgrounded -screens, and the tags stack. -.IP "Infinite undo" -Changes made during an edit session may be rolled backward and forward. -A -.CO \&. -command immediately after a -.CO u -command continues either forward or backward depending on whether the -.CO u -command was an undo or a redo. -.IP "Usage information" -The -.CO exusage -and -.CO viusage -commands provide usage information for all of the -.CO ex -and -.CO vi -commands by default, or, optionally, for a specific command or key. -.IP "Extended Regular Expressions" -The -.CO extended -option causes Regular Expressions to be interpreted as as Extended -Regular Expressions, (i.e. \fIegrep\fP(1) style Regular Expressions). -.IP "Word search" -The -.CO <control-A> -command searches for the word referenced by the cursor. -.IP "Number increment" -The -.CO \&# -command increments or decrements the number referenced by the cursor. -.IP "Previous file" -The -.CO previous -command edits the previous file from the argument list. -.IP "Left-right scrolling" -The -.CO leftright -option causes -.CO nvi -to do left-right screen scrolling, instead of the traditional -.CO vi -line wrapping. -.bp -.SH 1 Index -.lp -.2c +0.5i 3 -.ta \n($luR -.nf -.so index.so -.fi -.bp 2 -.1c -.ce 1 -\fB\s+2Table of Contents\s0\fP -.sp -.xp diff --git a/usr.bin/vi/common/exf.c b/usr.bin/vi/common/exf.c index c0b181bfe41..4a17ae69bc6 100644 --- a/usr.bin/vi/common/exf.c +++ b/usr.bin/vi/common/exf.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)exf.c 10.46 (Berkeley) 8/11/96"; +static const char sccsid[] = "@(#)exf.c 10.47 (Berkeley) 8/12/96"; #endif /* not lint */ #include <sys/param.h> @@ -475,22 +475,23 @@ file_spath(sp, frp, sbp, existsp) } /* Try the O_PATH option values. */ - for (found = 0, p = t = O_STR(sp, O_PATH);; ++p) { + for (found = 0, p = t = O_STR(sp, O_PATH);; ++p) if (*p == ':' || *p == '\0') { if (t < p - 1) { savech = *p; *p = '\0'; len = snprintf(path, sizeof(path), "%s/%s", t, name); - if (!stat(path, sbp)) - found = 1; *p = savech; + if (!stat(path, sbp)) { + found = 1; + break; + } } t = p + 1; + if (*p == '\0') + break; } - if (*p == '\0' || found) - break; - } /* If we found it, build a new pathname and discard the old one. */ if (found) { diff --git a/usr.bin/vi/common/msg.c b/usr.bin/vi/common/msg.c index e705b07d9f2..c56fad36989 100644 --- a/usr.bin/vi/common/msg.c +++ b/usr.bin/vi/common/msg.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)msg.c 10.42 (Berkeley) 8/11/96"; +static const char sccsid[] = "@(#)msg.c 10.45 (Berkeley) 8/18/96"; #endif /* not lint */ #include <sys/param.h> @@ -516,6 +516,7 @@ msgq_status(sp, lno, flags) recno_t lno; u_int flags; { + static int poisoned; recno_t last; size_t blen, len; int cnt, needsep; @@ -537,12 +538,13 @@ msgq_status(sp, lno, flags) /* Copy in the argument count. */ if (F_ISSET(sp, SC_STATUS_CNT) && sp->argv != NULL) { for (cnt = 0, ap = sp->argv; *ap != NULL; ++ap, ++cnt); - (void)sprintf(p, - msg_cat(sp, "317|%d files to edit", NULL), cnt); - p += strlen(p); - *p++ = ':'; - *p++ = ' '; - + if (cnt > 1) { + (void)sprintf(p, + msg_cat(sp, "317|%d files to edit", NULL), cnt); + p += strlen(p); + *p++ = ':'; + *p++ = ' '; + } F_CLR(sp, SC_STATUS_CNT); } @@ -624,7 +626,25 @@ msgq_status(sp, lno, flags) (void)sprintf(p, " (pid %lu)", (u_long)getpid()); p += strlen(p); #endif + len = p - bp; + + /* + * Poison. + * + * This message may not be altered in any way, without the written + * permission of Keith Bostic. See the LICENSE file for further + * information. + */ +#define POISON " (UNLICENSED)" + if (!poisoned && len + 1 + (sizeof(POISON) - 1) < sp->cols) { + memcpy(p, POISON, sizeof(POISON) - 1); + p += sizeof(POISON) - 1; + len += sizeof(POISON) - 1; + poisoned = 1; + } + *p++ = '\n'; + ++len; /* * There's a nasty problem with long path names. Cscope and tags files @@ -633,21 +653,26 @@ msgq_status(sp, lno, flags) * has already typed ahead, and chaos results. If we assume that the * characters in the filenames and informational messages only take a * single screen column each, we can trim the filename. + * + * XXX + * Status lines get put up at fairly awkward times. For example, when + * you do a filter read (e.g., :read ! echo foo) in the top screen of a + * split screen, we have to repaint the status lines for all the screens + * below the top screen. We don't want users having to enter continue + * characters for those screens. Make it really hard to screw this up. */ s = bp; - if (LF_ISSET(MSTAT_TRUNCATE)) - if ((p - s) >= sp->cols) { - for (; s < np && - (*s != '/' || (p - s) > sp->cols - 3); ++s); - if (s == np) - s = bp; - else { - *--s = '.'; - *--s = '.'; - *--s = '.'; - } + if (LF_ISSET(MSTAT_TRUNCATE) && len >= sp->cols) { + for (; s < np && (*s != '/' || (p - s) > sp->cols - 3); ++s); + if (s == np) { + s = p - (sp->cols - 5); + *--s = ' '; } - len = p - s; + *--s = '.'; + *--s = '.'; + *--s = '.'; + len = p - s; + } /* Flush any waiting ex messages. */ (void)ex_fflush(sp); diff --git a/usr.bin/vi/docs/USD.doc/edit/edittut.ms b/usr.bin/vi/docs/USD.doc/edit/edittut.ms index 274e28676ed..8a9d66ede2e 100644 --- a/usr.bin/vi/docs/USD.doc/edit/edittut.ms +++ b/usr.bin/vi/docs/USD.doc/edit/edittut.ms @@ -29,14 +29,14 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)edittut.ms 8.2 (Berkeley) 6/27/96 +.\" @(#)edittut.ms 8.3 (Berkeley) 8/18/96 .\" +.ll 6.5i +.nr LL 6.5i .EH 'USD:11-%''Edit: A Tutorial' .OH 'Edit: A Tutorial''USD:11-%' .LP .ds u \s-2UNIX\s0 -.ll 5i -.nr LL 5i .ND .sp 4 .ce diff --git a/usr.bin/vi/docs/USD.doc/exref/ex.rm b/usr.bin/vi/docs/USD.doc/exref/ex.rm index 0ada716a225..217bad46d27 100644 --- a/usr.bin/vi/docs/USD.doc/exref/ex.rm +++ b/usr.bin/vi/docs/USD.doc/exref/ex.rm @@ -29,8 +29,10 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)ex.rm 8.4 (Berkeley) 6/27/96 +.\" @(#)ex.rm 8.5 (Berkeley) 8/18/96 .\" +.nr LL 6.5i +.nr FL 6.5i .EH 'USD:12-%''Ex Reference Manual' .OH 'Ex Reference Manual''USD:12-%' .nr )P 0 diff --git a/usr.bin/vi/docs/USD.doc/exref/ex.summary b/usr.bin/vi/docs/USD.doc/exref/ex.summary index 763aafa5b33..83084a368ed 100644 --- a/usr.bin/vi/docs/USD.doc/exref/ex.summary +++ b/usr.bin/vi/docs/USD.doc/exref/ex.summary @@ -29,15 +29,14 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)ex.summary 8.2 (Berkeley) 6/27/96 +.\" @(#)ex.summary 8.3 (Berkeley) 8/18/96 .\" .ds p \v'-0.2'.\v'+0.2' .ds U \s-2UNIX\s+2 .ds c \v'-0.2':\v'+0.2' -.nr PO .25i -.nr LL 6.75i -.lt 6.75i -.ll 6.75i +.nr LL 6.5i +.lt 6.5i +.ll 6.5i .ds CH .ds LF Computing Services, U.C. Berkeley .ds RF April 3, 1979 @@ -51,11 +50,10 @@ .ft B .ce 1 Ex/Edit Command Summary (Version 2.0) +.sp 1 .ft R .nr VS 11 .nr PS 9 -.nr HM 0.5i -.nr CW .2C .PP .I Ex @@ -251,10 +249,6 @@ rather than with its special meaning, precede it by a backslash (\\). The backslash always has a special meaning. .1C -.rm LF -.rm RF -.rm CF -.nr FM 0.4 .TS cp10 cp10 cp10 cp10 ltw(1.0i) lt2w(0.40i)fB ltw(3.0i) ltw(1.8i). @@ -497,10 +491,13 @@ after the current line T} .TE .FS -\(dg Seek assistance from a consultant as soon as possible -after saving a file with the +.ll 6.5i +\(dg You should seek assistance from a system administrator as soon as +possible after saving a file with the .I preserve -command, because the file is saved on system storage space for only one week. +command, because the preserved copy of the file is saved in a +directory used to store temporary files, and thus, the preserved +copy may only be available for a short period of time. .FE .SP .nf @@ -731,4 +728,3 @@ moving in the reverse direction through the buffer. T} .TE - diff --git a/usr.bin/vi/docs/USD.doc/vi.man/vi.1 b/usr.bin/vi/docs/USD.doc/vi.man/vi.1 index 0f11598b228..d17ff50db56 100644 --- a/usr.bin/vi/docs/USD.doc/vi.man/vi.1 +++ b/usr.bin/vi/docs/USD.doc/vi.man/vi.1 @@ -1,39 +1,16 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. -.\" Copyright (c) 1994, 1995 +.\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" This document may not be republished without written permission from +.\" Keith Bostic. .\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" See the LICENSE file for redistribution information. .\" -.\" @(#)vi.1 8.45 (Berkeley) 8/10/96 +.\" @(#)vi.1 8.48 (Berkeley) 8/18/96 .\" -.TH VI 1 "August 10, 1996" +.TH VI 1 "August 18, 1996" .UC .SH NAME ex, vi, view \- text editors @@ -70,6 +47,12 @@ ex, vi, view \- text editors ] [\c .BI -w " size"\c ] [file ...] +.SH LICENSE +The vi program is shareware. You are welcome to copy, modify and share +it with others under the conditions listed in the LICENSE file. If your +company finds vi sufficiently useful that you would have purchased it, +or your company wishes to redistribute it, contributions to the authors +would be appreciated. .SH DESCRIPTION .I \&Vi is a screen oriented text editor. diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/Makefile b/usr.bin/vi/docs/USD.doc/vi.ref/Makefile index cdbff5a381f..80c3fe5011f 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/Makefile +++ b/usr.bin/vi/docs/USD.doc/vi.ref/Makefile @@ -1,13 +1,13 @@ -# @(#)Makefile 8.18 (Berkeley) 3/27/96 +# @(#)Makefile 8.16 (Berkeley) 8/15/94 DIR= usd/13.viref SRCS= vi.ref ex.cmd.roff set.opt.roff vi.cmd.roff ref.so +EXTRA= merge.awk spell.ok MACROS= -me -CLEANFILES+=vi.ref.ps vi.ref.txt index index.so +CLEANFILES+=vi.ref.txt index index.so paper.ps: vi.ref index.so soelim vi.ref | ${TBL} | ${ROFF} > ${.TARGET} - rm -f vi.ref.ps && mv $@ vi.ref.ps vi.ref.txt: vi.ref index.so soelim vi.ref | ${TBL} | groff ${MACROS} -Tascii > $@ diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/ex.cmd.roff b/usr.bin/vi/docs/USD.doc/vi.ref/ex.cmd.roff index 20585a3baea..382e635a6fd 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/ex.cmd.roff +++ b/usr.bin/vi/docs/USD.doc/vi.ref/ex.cmd.roff @@ -1,37 +1,11 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. -.\" Copyright (c) 1994, 1995 +.\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" See the LICENSE file for redistribution information. .\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)ex.cmd.roff 8.40 (Berkeley) 8/10/96 +.\" @(#)ex.cmd.roff 8.41 (Berkeley) 8/17/96 .\" .SH 1 "Ex Description" .pp diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/merge.awk b/usr.bin/vi/docs/USD.doc/vi.ref/merge.awk index 16b51520a77..c65207c106a 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/merge.awk +++ b/usr.bin/vi/docs/USD.doc/vi.ref/merge.awk @@ -1,4 +1,4 @@ -# @(#)merge.awk 8.3 (Berkeley) 5/26/94 +# @(#)merge.awk 8.3 (Berkeley) 5/25/94 # # merge index entries into one line per label $1 == prev { diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/ref.so b/usr.bin/vi/docs/USD.doc/vi.ref/ref.so index ecc91575275..a82c79258bb 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/ref.so +++ b/usr.bin/vi/docs/USD.doc/vi.ref/ref.so @@ -1,37 +1,11 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. -.\" Copyright (c) 1994, 1995 +.\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" See the LICENSE file for redistribution information. .\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)ref.so 8.8 (Berkeley) 1/11/95 +.\" @(#)ref.so 8.9 (Berkeley) 8/17/96 .\" .\" .\" indented paragraph, with spaces between the items, bold font diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff b/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff index 3638d8c777d..7ba7adbab22 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff +++ b/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff @@ -1,37 +1,11 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. -.\" Copyright (c) 1994, 1995 +.\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" See the LICENSE file for redistribution information. .\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)set.opt.roff 8.64 (Berkeley) 8/10/96 +.\" @(#)set.opt.roff 8.65 (Berkeley) 8/17/96 .\" .SH 1 "Set Options" .pp diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/vi.cmd.roff b/usr.bin/vi/docs/USD.doc/vi.ref/vi.cmd.roff index 14d61dc862f..12030cd52b0 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/vi.cmd.roff +++ b/usr.bin/vi/docs/USD.doc/vi.ref/vi.cmd.roff @@ -1,37 +1,11 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. -.\" Copyright (c) 1994, 1995 +.\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" See the LICENSE file for redistribution information. .\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)vi.cmd.roff 8.48 (Berkeley) 10/3/95 +.\" @(#)vi.cmd.roff 8.49 (Berkeley) 8/17/96 .\" .SH 1 "Vi Description" .pp diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref b/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref index 912004d5953..c5d3ec9f387 100644 --- a/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref +++ b/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref @@ -1,37 +1,14 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. -.\" Copyright (c) 1994, 1995 +.\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" This document may not be republished without written permission from +.\" Keith Bostic. .\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" See the LICENSE file for redistribution information. .\" -.\" @(#)vi.ref 8.76 (Berkeley) 6/28/96 +.\" @(#)vi.ref 8.82 (Berkeley) 8/18/96 .\" .\" .so ref.so @@ -51,21 +28,42 @@ University of California, Berkeley Berkeley, California 94720 .sp 1 \*(td +.)l .sp 3 +.(l C .i Abstract -.sp .)l .(q .pp This document is the reference guide for the 4.4BSD implementations of .EV nex nvi , -which are reimplementations of the historic Berkeley +which are implementations of the historic Berkeley .EV ex vi editors. .)q .sp 3 .(l C +.i Licensing +.)l +.sp +.lp +Copyright (c) 1991, 1992, 1993, 1994 +.ti +5 +The Regents of the University of California. All Rights Reserved. +.lp +Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 +.ti +5 +Keith Bostic. All Rights Reserved. +.sp +.pp +The vi program is shareware. You are welcome to copy, modify and share +it with others under the conditions listed in the LICENSE file. If your +company finds vi sufficiently useful that you would have purchased it, +or your company wishes to redistribute it, contributions to the authors +would be appreciated. +.bp 2 +.(l C .i Acknowledgements .)l .sp @@ -97,6 +95,11 @@ Scrolling and reworking for .CO nvi was done by Elan Amir. .pp +George Neville-Neil added the Tcl interpreter, +and Sven Verdoolaege added the Perl5 interpreter. +.pp +Rob Mayoff added Cscope support. +.pp The Institute of Electrical and Electronics Engineers has given us permission to reprint portions of their documentation. Portions of this document are reprinted and reproduced from @@ -108,19 +111,10 @@ Engineers, Inc. The financial support of UUNET Communications Services is gratefully acknowledged. .)q -.sp 6 -.lp -Copyright (c) 1991, 1993, 1994 -.ti +5 -The Regents of the University of California. All Rights Reserved. -.lp -Copyright (c) 1994, 1995 -.ti +5 -Keith Bostic. All Rights Reserved. .sy echo -n >index .oh 'Nvi/Nex Reference''USD:13-%' .eh 'USD:13-%''Nvi/Nex Reference' -.bp 3 +.bp 4 .SH 1 Description .pp .CO Vi @@ -915,29 +909,38 @@ itself has eight subcommands: and .CO \&t . .pp -.IP "cs[cope] a[dd] directory" +.IP "cs[cope] a[dd] file" The .CO add -command attaches to the +command attaches to the specified .CO cscope -database in the specified directory. -The directory name is expanded using the standard filename expansions. +database. +The file name is expanded using the standard filename expansions. +If +.CO file +is a directory, the file +.QQ cscope.out +in that directory is used as the database. +.pp After .CO nvi attaches to a new database, all subsequent .CO cscope queries will be asked of that database. -The result of any single query is the collection of responses from all -of the databases to the query. +The result of any single query is the collection of response to the query +from all of the attached databases. .sp If the .QQ CSCOPE_DIRS environmental variable is set when .CO nvi -is run, it is expected to be a <blank>-separated list of directories containing +is run, +it is expected to be a <colon> or <blank>-separated list of .CO cscope -databases to which the user wishes to attach. +databases or directories containing +.CO cscope +databases, to which the user wishes to attach. .IP ":cs[cope] f[ind] c|d|e|f|g|i|s|t buffer|pattern" The .CO find @@ -972,8 +975,9 @@ In addition, if the file .QQ cscope.tpath appears in the same directory as the .CO cscope -database, it is expected to contain a colon-separated list of directory -names where files referenced by its associated +database, +it is expected to contain a colon-separated list of directory names +where files referenced by its associated .CO cscope database may be found. .sp @@ -1223,7 +1227,7 @@ source directories for more information. As a quick reference, the following function calls are provided for both the Perl and Tcl interfaces. The Perl interface uses a slightly different naming convention, -e.g. ``viFindScreen'' is named ``VI:FindScreen''. +e.g. ``viFindScreen'' is named ``VI::FindScreen''. .IP "viFindScreen file" Return the .LI "screenId" associated with @@ -1845,7 +1849,7 @@ of the file. .nf .so index.so .fi -.bp 2 +.bp 3 .1c .ce 1 \fB\s+2Table of Contents\s0\fP diff --git a/usr.bin/vi/docs/USD.doc/vitut/vi.apwh.ms b/usr.bin/vi/docs/USD.doc/vitut/vi.apwh.ms index d0b62611c70..6b0763055ca 100644 --- a/usr.bin/vi/docs/USD.doc/vitut/vi.apwh.ms +++ b/usr.bin/vi/docs/USD.doc/vitut/vi.apwh.ms @@ -29,8 +29,10 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)vi.apwh.ms 8.1 (Berkeley) 6/8/93 +.\" @(#)vi.apwh.ms 8.2 (Berkeley) 8/18/96 .\" +.nr LL 6.5i +.nr FL 6.5i .TL Vi Command & Function Reference .AU CB 2675 diff --git a/usr.bin/vi/docs/USD.doc/vitut/vi.in b/usr.bin/vi/docs/USD.doc/vitut/vi.in index 9815e6d3c8a..c36ebe41743 100644 --- a/usr.bin/vi/docs/USD.doc/vitut/vi.in +++ b/usr.bin/vi/docs/USD.doc/vitut/vi.in @@ -29,8 +29,10 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)vi.in 8.4 (Berkeley) 6/27/96 +.\" @(#)vi.in 8.5 (Berkeley) 8/18/96 .\" +.nr LL 6.5i +.nr FL 6.5i .EH 'USD:11-%''An Introduction to Display Editing with Vi' .OH 'An Introduction to Display Editing with Vi''USD:11-%' .bd S 3 diff --git a/usr.bin/vi/docs/USD.doc/vitut/vi.summary b/usr.bin/vi/docs/USD.doc/vitut/vi.summary index 2e3a5c2b3b0..8a09ce94440 100644 --- a/usr.bin/vi/docs/USD.doc/vitut/vi.summary +++ b/usr.bin/vi/docs/USD.doc/vitut/vi.summary @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" @(#)vi.summary 8.2 (Berkeley) 6/27/96 +.\" @(#)vi.summary 8.3 (Berkeley) 8/18/96 .\" .ds CH .ds CF @@ -49,10 +49,10 @@ .vs 11 .nr HM .50i .nr FM .25i -.nr PO 0 -.po 0 -.nr LL 3.5i -.ll 3.5i +.nr PO 1.0i +.po 1.0i +.nr LL 4.5i +.ll 4.5i .de nc .bp .. diff --git a/usr.bin/vi/docs/changelog b/usr.bin/vi/docs/changelog index 6e862004914..dc3a7cc0c27 100644 --- a/usr.bin/vi/docs/changelog +++ b/usr.bin/vi/docs/changelog @@ -1,4 +1,14 @@ +1.73 -> 1.74 (08/18/96) + + Fix bug where the status line wasn't redisplayed if the user ran + an ex command that trashed the screen. + + Fix bug where the long version of the status line wasn't displayed + when switching screens. + + Rework fast-path filename completion code to sort the entries, and + strip out . and .. by default. + + Fix bug where ex went to the first line instead of the last one when + reading in a file. 1.72 -> 1.73 (08/12/96) + + Do filename completion and some file expansion internally for speed. + Fix CSCOPE_DIRS environmental variable support. + Ex parser fix for global commands in script files. + Add the O_PATH option, so you can specify a directory search path diff --git a/usr.bin/vi/docs/features b/usr.bin/vi/docs/features index 5050e13ddbe..7e49e7235dc 100644 --- a/usr.bin/vi/docs/features +++ b/usr.bin/vi/docs/features @@ -41,11 +41,6 @@ List of suggested features: of the screen aren't filled except by accident, so that the text you ask for is always concentrated in the center of the screen. -+ Add "set searchdir" for a list of directories to look in for - files to edit. The semantic is that ":e foo" is replaced with - the file name that is found, so there's no confusion as to - which file is written. - + Change :di[splay] tags -> :tags :di[splay] screens -> :screens diff --git a/usr.bin/vi/ex/ex.h b/usr.bin/vi/ex/ex.h index cd18ced76ab..5870990b744 100644 --- a/usr.bin/vi/ex/ex.h +++ b/usr.bin/vi/ex/ex.h @@ -6,7 +6,7 @@ * * See the LICENSE file for redistribution information. * - * @(#)ex.h 10.23 (Berkeley) 6/30/96 + * @(#)ex.h 10.24 (Berkeley) 8/12/96 */ #define PROMPTCHAR ':' /* Prompt using a colon. */ @@ -155,13 +155,6 @@ struct _excmd { u_int32_t flags; /* Current flags. */ }; -/* Cd paths. */ -typedef struct _cdpath CDPATH; -struct _cdpath { /* Cd path structure. */ - TAILQ_ENTRY(_cdpath) q; /* Linked list of cd paths. */ - char *path; /* Path. */ -}; - /* Ex private, per-screen memory. */ typedef struct _ex_private { CIRCLEQ_HEAD(_tqh, _tagq) tq; /* Tag queue. */ @@ -169,8 +162,6 @@ typedef struct _ex_private { LIST_HEAD(_csch, _csc) cscq; /* Cscope connection list. */ char *tag_last; /* Saved last tag string. */ - TAILQ_HEAD(_cdh, _cdpath) cdq; /* Cd path list. */ - CHAR_T *lastbcomm; /* Last bang command. */ ARGS **args; /* Command: argument list. */ diff --git a/usr.bin/vi/ex/ex_argv.c b/usr.bin/vi/ex/ex_argv.c index e2cbfd61246..1930bf145d0 100644 --- a/usr.bin/vi/ex/ex_argv.c +++ b/usr.bin/vi/ex/ex_argv.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)ex_argv.c 10.23 (Berkeley) 8/11/96"; +static const char sccsid[] = "@(#)ex_argv.c 10.25 (Berkeley) 8/13/96"; #endif /* not lint */ #include <sys/types.h> @@ -29,10 +29,10 @@ static const char sccsid[] = "@(#)ex_argv.c 10.23 (Berkeley) 8/11/96"; #include "../common/common.h" static int argv_alloc __P((SCR *, size_t)); +static int argv_comp __P((const void *, const void *)); static int argv_fexp __P((SCR *, EXCMD *, char *, size_t, char *, size_t *, char **, size_t *, int)); -static int argv_prefix __P((SCR *, - char *, char *, char **, size_t *, size_t *)); +static int argv_lexp __P((SCR *, EXCMD *, char *)); static int argv_sexp __P((SCR *, char **, size_t *, size_t *)); /* @@ -74,7 +74,7 @@ argv_exp0(sp, excp, cmd, cmdlen) exp = EXP(sp); argv_alloc(sp, cmdlen); - memmove(exp->args[exp->argsoff]->bp, cmd, cmdlen); + memcpy(exp->args[exp->argsoff]->bp, cmd, cmdlen); exp->args[exp->argsoff]->bp[cmdlen] = '\0'; exp->args[exp->argsoff]->len = cmdlen; ++exp->argsoff; @@ -149,7 +149,7 @@ argv_exp2(sp, excp, cmd, cmdlen) #define SHELLECHO "echo " #define SHELLOFFSET (sizeof(SHELLECHO) - 1) - memmove(bp, SHELLECHO, SHELLOFFSET); + memcpy(bp, SHELLECHO, SHELLOFFSET); p = bp + SHELLOFFSET; len = SHELLOFFSET; @@ -216,18 +216,12 @@ argv_exp2(sp, excp, cmd, cmdlen) case 0: p = bp + SHELLOFFSET; len -= SHELLOFFSET; + rval = argv_exp3(sp, excp, p, len); break; case 1: if (*p == '*') { - *p++ = '\0'; - n = p - bp; - if (argv_prefix(sp, - bp + SHELLOFFSET, p, &bp, &blen, &len)) { - rval = 1; - goto err; - } - p = bp + n; - len -= n; + *p = '\0'; + rval = argv_lexp(sp, excp, bp + SHELLOFFSET); break; } /* FALLTHROUGH */ @@ -237,15 +231,10 @@ argv_exp2(sp, excp, cmd, cmdlen) goto err; } p = bp; + rval = argv_exp3(sp, excp, p, len); break; } -#if defined(DEBUG) && 0 - TRACE(sp, "after shell: %d: {%s}\n", len, bp); -#endif - - rval = argv_exp3(sp, excp, p, len); - err: FREE_SPACE(sp, bp, blen); return (rval); } @@ -352,7 +341,7 @@ argv_fexp(sp, excp, cmd, cmdlen, p, lenp, bpp, blenp, is_bang) } len += tlen = strlen(exp->lastbcomm); ADD_SPACE_RET(sp, bp, blen, len); - memmove(p, exp->lastbcomm, tlen); + memcpy(p, exp->lastbcomm, tlen); p += tlen; F_SET(excp, E_MODIFY); break; @@ -365,7 +354,7 @@ argv_fexp(sp, excp, cmd, cmdlen, p, lenp, bpp, blenp, is_bang) tlen = strlen(t); len += tlen; ADD_SPACE_RET(sp, bp, blen, len); - memmove(p, t, tlen); + memcpy(p, t, tlen); p += tlen; F_SET(excp, E_MODIFY); break; @@ -377,7 +366,7 @@ argv_fexp(sp, excp, cmd, cmdlen, p, lenp, bpp, blenp, is_bang) } len += tlen = strlen(t); ADD_SPACE_RET(sp, bp, blen, len); - memmove(p, t, tlen); + memcpy(p, t, tlen); p += tlen; F_SET(excp, E_MODIFY); break; @@ -508,33 +497,34 @@ argv_free(sp) } /* - * argv_prefix -- + * argv_lexp -- * Find all file names matching the prefix and append them to the * buffer. */ static int -argv_prefix(sp, path, wp, bpp, blenp, lenp) +argv_lexp(sp, excp, path) SCR *sp; - char *path, *wp, **bpp; - size_t *blenp, *lenp; + EXCMD *excp; + char *path; { - DIR *dirp; struct dirent *dp; - size_t blen, clen, dlen, doffset, len, nlen; - char *bp, *dname, *name, *p; + DIR *dirp; + EX_PRIVATE *exp; + int off; + size_t dlen, len, nlen; + char *dname, *name, *p; - /* - * Open the directory, set up the name and length for comparison, - * the prepended directory and length. - */ + exp = EXP(sp); + + /* Set up the name and length for comparison. */ if ((p = strrchr(path, '/')) == NULL) { - dlen = 0; dname = "."; + dlen = 0; name = path; } else { if (p == path) { dname = "/"; - dlen = 0; + dlen = 1; } else { *p = '\0'; dname = path; @@ -544,80 +534,68 @@ argv_prefix(sp, path, wp, bpp, blenp, lenp) } nlen = strlen(name); - if ((dirp = opendir(dname)) == NULL) { - msgq_str(sp, M_SYSERR, dname, "%s"); - return (1); - } - - /* Local copies of the buffer variables. */ - bp = *bpp; - blen = *blenp; - /* - * We're passed a pointer to the name (after the echo command at - * the start of the buffer) and a pointer to the place to start - * writing. Set a pointer to the start of the write area, and a - * value for the amount of space we have to write. - */ - p = wp; - len = wp - bp; - blen -= len; - - /* - * Read the directory, checking for files with a matching prefix. - * * XXX * We don't use the d_namlen field, it's not portable enough; we * assume that d_name is nul terminated, instead. */ - while ((dp = readdir(dirp)) != NULL) { - clen = strlen(dp->d_name); - if (nlen == 0 || - (clen >= nlen && !memcmp(dp->d_name, name, nlen))) { - if (blen < clen + dlen + 5) { - doffset = dname - bp; - ADD_SPACE_GOTO(sp, bp, *blenp, - *blenp * 2 + clen + dlen + 5); - p = bp + len; - blen = *blenp - len; - if (dname == path) - dname = bp + doffset; - } - if (dlen != 0) { - memcpy(p, dname, dlen); - p += dlen; + if ((dirp = opendir(dname)) == NULL) { + msgq_str(sp, M_SYSERR, dname, "%s"); + return (1); + } + for (off = exp->argsoff; (dp = readdir(dirp)) != NULL;) { + if (nlen == 0) { + if (dp->d_name[0] == '.') + continue; + len = strlen(dp->d_name); + } else { + len = strlen(dp->d_name); + if (len < nlen || memcmp(dp->d_name, name, nlen)) + continue; + } + + /* Directory + name + slash + null. */ + argv_alloc(sp, dlen + len + 2); + p = exp->args[exp->argsoff]->bp; + if (dlen != 0) { + memcpy(p, dname, dlen); + p += dlen; + if (dlen > 1 || dname[0] != '/') *p++ = '/'; - len += dlen + 1; - blen -= dlen + 1; - } - memcpy(p, dp->d_name, clen); - p += clen; - *p++ = ' '; - len += clen + 1; - blen -= clen + 1; } + memcpy(p, dp->d_name, len + 1); + exp->args[exp->argsoff]->len = dlen + len + 1; + ++exp->argsoff; + excp->argv = exp->args; + excp->argc = exp->argsoff; } - (void)closedir(dirp); + closedir(dirp); - /* - * If we didn't find a match, complain that the expansion failed. We - * can't know for certain that's the error, but it's a good guess, and - * it matches historic practice. - */ - if (p == wp) { + if (off == exp->argsoff) { + /* + * If we didn't find a match, complain that the expansion + * failed. We can't know for certain that's the error, but + * it's a good guess, and it matches historic practice. + */ msgq(sp, M_ERR, "304|Shell expansion failed"); -alloc_err: return (1); + return (1); } - - /* Delete the final <space>, nul terminate the string. */ - *--p = '\0'; - *lenp = len - 1; - *bpp = bp; /* *blenp is already updated. */ - + qsort(exp->args + off, exp->argsoff - off, sizeof(ARGS *), argv_comp); return (0); } /* + * argv_comp -- + * Alphabetic comparison. + */ +static int +argv_comp(a, b) + const void *a, *b; +{ + return (strcmp((char *)(*(ARGS **)a)->bp, (char *)(*(ARGS **)b)->bp)); +} + +/* * argv_sexp -- * Fork a shell, pipe a command through it, and read the output into * a buffer. diff --git a/usr.bin/vi/ex/ex_cd.c b/usr.bin/vi/ex/ex_cd.c index dac8f243dda..3307c7b6306 100644 --- a/usr.bin/vi/ex/ex_cd.c +++ b/usr.bin/vi/ex/ex_cd.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)ex_cd.c 10.9 (Berkeley) 3/30/96"; +static const char sccsid[] = "@(#)ex_cd.c 10.10 (Berkeley) 8/12/96"; #endif /* not lint */ #include <sys/param.h> @@ -40,8 +40,8 @@ ex_cd(sp, cmdp) { struct passwd *pw; ARGS *ap; - CDPATH *cdp; - char *dir; /* XXX END OF THE STACK, DON'T TRUST GETCWD. */ + CHAR_T savech; + char *dir, *p, *t; /* XXX: END OF THE STACK, DON'T TRUST GETCWD. */ char buf[MAXPATHLEN * 2]; /* @@ -78,9 +78,9 @@ ex_cd(sp, cmdp) } /* - * Try the current directory first. If this succeeds, don't - * display a message, vi didn't historically, and it's real - * obvious to the user where they are. + * Try the current directory first. If this succeeds, don't display + * a message, vi didn't historically, and it should be obvious to the + * user where they are. */ if (!chdir(dir)) return (0); @@ -96,109 +96,34 @@ ex_cd(sp, cmdp) (ap->bp[2] == '/' || ap->bp[2] == '\0')) goto err; - /* If the user has a CDPATH variable, try its elements. */ - for (cdp = EXP(sp)->cdq.tqh_first; cdp != NULL; cdp = cdp->q.tqe_next) { - (void)snprintf(buf, sizeof(buf), "%s/%s", cdp->path, dir); - if (!chdir(buf)) { - if (getcwd(buf, sizeof(buf)) != NULL) - msgq_str(sp, M_INFO, buf, - "122|New current directory: %s"); - return (0); - } - } -err: msgq_str(sp, M_SYSERR, dir, "%s"); - return (1); -} - -#define FREE_CDPATH(cdp) { \ - TAILQ_REMOVE(&exp->cdq, (cdp), q); \ - free((cdp)->path); \ - free(cdp); \ -} - -/* - * ex_cdalloc -- - * Create a new list of cd paths. - * - * PUBLIC: int ex_cdalloc __P((SCR *, char *)); - */ -int -ex_cdalloc(sp, str) - SCR *sp; - char *str; -{ - EX_PRIVATE *exp; - CDPATH *cdp; - size_t len; - int founddot; - char *p, *t; - - /* Free current queue. */ - exp = EXP(sp); - while ((cdp = exp->cdq.tqh_first) != NULL) - FREE_CDPATH(cdp); - - /* - * Create new queue. The CDPATH environmental variable (and the - * user's manual entry) are delimited by colon characters. - */ - for (p = t = str, founddot = 0;; ++p) { + /* Try the O_CDPATH option values. */ + for (p = t = O_STR(sp, O_CDPATH);; ++p) if (*p == '\0' || *p == ':') { /* * Empty strings specify ".". The only way to get an * empty string is a leading colon, colons in a row, * or a trailing colon. Or, to put it the other way, - * if the the length is zero, then it's either ":XXX", - * "XXX::XXXX" , "XXX:", or "", and the only failure - * mode is the last one. Note, the string ":" gives - * us two entries of '.', so we only include one of - * them. + * if the length is 1 or less, then we're dealing with + * ":XXX", "XXX::XXXX" , "XXX:", or "". Since we've + * already tried dot, we ignore tham all. */ - if ((len = p - t) == 0) { - if (p == str && *p == '\0') - break; - if (founddot) { - if (*p == '\0') - break; - continue; + if (t < p - 1) { + savech = *p; + *p = '\0'; + (void)snprintf(buf, + sizeof(buf), "%s/%s", t, dir); + *p = savech; + if (!chdir(buf)) { + if (getcwd(buf, sizeof(buf)) != NULL) + msgq_str(sp, M_INFO, buf, "122|New current directory: %s"); + return (0); } - len = 1; - t = "."; - founddot = 1; - } - MALLOC_RET(sp, cdp, CDPATH *, sizeof(CDPATH)); - MALLOC(sp, cdp->path, char *, len + 1); - if (cdp->path == NULL) { - free(cdp); - return (1); } - memmove(cdp->path, t, len); - cdp->path[len] = '\0'; - TAILQ_INSERT_TAIL(&exp->cdq, cdp, q); t = p + 1; + if (*p == '\0') + break; } - if (*p == '\0') - break; - } - return (0); -} - /* Free previous queue. */ -/* - * ex_cdfree -- - * Free the cd path list. - * - * PUBLIC: int ex_cdfree __P((SCR *)); - */ -int -ex_cdfree(sp) - SCR *sp; -{ - EX_PRIVATE *exp; - CDPATH *cdp; - /* Free up cd path information. */ - exp = EXP(sp); - while ((cdp = exp->cdq.tqh_first) != NULL) - FREE_CDPATH(cdp); - return (0); +err: msgq_str(sp, M_SYSERR, dir, "%s"); + return (1); } diff --git a/usr.bin/vi/ex/ex_init.c b/usr.bin/vi/ex/ex_init.c index 31bcb2a176f..6a78416a334 100644 --- a/usr.bin/vi/ex/ex_init.c +++ b/usr.bin/vi/ex/ex_init.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)ex_init.c 10.25 (Berkeley) 7/10/96"; +static const char sccsid[] = "@(#)ex_init.c 10.26 (Berkeley) 8/12/96"; #endif /* not lint */ #include <sys/param.h> @@ -55,7 +55,6 @@ ex_screen_copy(orig, sp) CIRCLEQ_INIT(&nexp->tq); TAILQ_INIT(&nexp->tagfq); LIST_INIT(&nexp->cscq); - TAILQ_INIT(&nexp->cdq); if (orig == NULL) { } else { @@ -106,9 +105,6 @@ ex_screen_end(sp) if (ex_tag_free(sp)) rval = 1; - if (ex_cdfree(sp)) - rval = 1; - /* Free private memory. */ free(exp); sp->ex_private = NULL; @@ -130,8 +126,6 @@ ex_optchange(sp, offset, str, valp) u_long *valp; { switch (offset) { - case O_CDPATH: - return (ex_cdalloc(sp, str)); case O_TAGS: return (ex_tagf_alloc(sp, str)); } diff --git a/usr.bin/vi/ex/ex_read.c b/usr.bin/vi/ex/ex_read.c index 6e6afa8ebcf..78296ff28ca 100644 --- a/usr.bin/vi/ex/ex_read.c +++ b/usr.bin/vi/ex/ex_read.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)ex_read.c 10.37 (Berkeley) 7/12/96"; +static const char sccsid[] = "@(#)ex_read.c 10.38 (Berkeley) 8/12/96"; #endif /* not lint */ #include <sys/types.h> @@ -267,15 +267,20 @@ ex_read(sp, cmdp) rval = ex_readfp(sp, name, fp, &cmdp->addr1, &nlines, 0); /* - * Set the cursor to the first line read in, if anything read - * in, otherwise, the address. (Historic vi set it to the - * line after the address regardless, but since that line may - * not exist we don't bother.) + * In vi, set the cursor to the first line read in, if anything read + * in, otherwise, the address. (Historic vi set it to the line after + * the address regardless, but since that line may not exist we don't + * bother.) + * + * In ex, set the cursor to the last line read in, if anything read in, + * otherwise, the address. */ - sp->lno = cmdp->addr1.lno; - if (nlines) - ++sp->lno; - + if (F_ISSET(sp, SC_VI)) { + sp->lno = cmdp->addr1.lno; + if (nlines) + ++sp->lno; + } else + sp->lno = cmdp->addr1.lno + nlines; return (rval); } diff --git a/usr.bin/vi/ex/ex_version.c b/usr.bin/vi/ex/ex_version.c index 5e279bdaca0..030b020f6ce 100644 --- a/usr.bin/vi/ex/ex_version.c +++ b/usr.bin/vi/ex/ex_version.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)ex_version.c 10.28 (Berkeley) 7/14/96"; +static const char sccsid[] = "@(#)ex_version.c 10.30 (Berkeley) 8/17/96"; #endif /* not lint */ #include <sys/types.h> @@ -23,24 +23,9 @@ static const char sccsid[] = "@(#)ex_version.c 10.28 (Berkeley) 7/14/96"; #include "../common/common.h" #include "version.h" -#define BSDI_ADVERT \ -"\nBerkeley Software Design, Inc. (BSDI) is the commercial supplier of \ -the state-of-the-art BSD operating system, networking and Internet \ -technologies originally developed by the Computer Systems Research \ -Group (CSRG) at the University of California at Berkeley. BSDI's \ -BSD/OS represents over twenty years of development by the worldwide \ -BSD community. BSD technology is known for its flexible and portable \ -architecture and advanced development environments. Today, BSDI is \ -recognized for the strength of BSDI-powered systems in demanding \ -business and technical computing environments, the worldwide customer \ -acceptance of BSD-based technology, the know-how of BSDI's leading \ -computer scientists, and BSDI's focus on delivering and supporting \ -industrial-strength software for computing platforms. BSDI may be \ -contacted at http://www.bsdi.com/, info@bsdi.com or 1-800-800-4273." - /* * ex_version -- :version - * Display the program version and a shameless plug for BSDI. + * Display the program version. * * PUBLIC: int ex_version __P((SCR *, EXCMD *)); */ @@ -49,7 +34,8 @@ ex_version(sp, cmdp) SCR *sp; EXCMD *cmdp; { + msgq(sp, M_INFO, + "Vi is shareware: see the LICENSE file for details."); msgq(sp, M_INFO, VI_VERSION); - msgq(sp, M_INFO, BSDI_ADVERT); return (0); } diff --git a/usr.bin/vi/ex/version.h b/usr.bin/vi/ex/version.h index 9586ba7942a..c0a2f3c18f1 100644 --- a/usr.bin/vi/ex/version.h +++ b/usr.bin/vi/ex/version.h @@ -1,2 +1,2 @@ #define VI_VERSION \ - "Version 1.73 (8/12/96) The CSRG, University of California, Berkeley." + "Version 1.74 (8/18/96) The CSRG, University of California, Berkeley." diff --git a/usr.bin/vi/include/ex_extern.h b/usr.bin/vi/include/ex_extern.h index 35fe51383ca..ed01701f118 100644 --- a/usr.bin/vi/include/ex_extern.h +++ b/usr.bin/vi/include/ex_extern.h @@ -24,8 +24,6 @@ int argv_free __P((SCR *)); int ex_at __P((SCR *, EXCMD *)); int ex_bang __P((SCR *, EXCMD *)); int ex_cd __P((SCR *, EXCMD *)); -int ex_cdalloc __P((SCR *, char *)); -int ex_cdfree __P((SCR *)); int ex_cscope __P((SCR *, EXCMD *)); int cscope_display __P((SCR *)); int cscope_search __P((SCR *, TAGQ *, TAG *)); diff --git a/usr.bin/vi/include/vi_extern.h b/usr.bin/vi/include/vi_extern.h index fb50fac1383..bcd23595ecb 100644 --- a/usr.bin/vi/include/vi_extern.h +++ b/usr.bin/vi/include/vi_extern.h @@ -116,7 +116,6 @@ void vs_home __P((SCR *)); void vs_update __P((SCR *, const char *, const char *)); void vs_msg __P((SCR *, mtype_t, char *, size_t)); int vs_ex_resolve __P((SCR *, int *)); -int vs_resolve __P((SCR *, int)); int vs_repaint __P((SCR *, EVENT *)); int vs_refresh __P((SCR *, int)); int vs_column __P((SCR *, size_t *)); diff --git a/usr.bin/vi/install/recover.script b/usr.bin/vi/install/recover.script deleted file mode 100644 index 0f80a4abfa3..00000000000 --- a/usr.bin/vi/install/recover.script +++ /dev/null @@ -1,46 +0,0 @@ -# @(#)recover.script 8.7 (Berkeley) 8/16/94 -# -# Script to recover nvi edit sessions. -# -RECDIR=/var/tmp/vi.recover -SENDMAIL=/usr/sbin/sendmail -echo 'Recovering nvi editor sessions.' - -# Check editor backup files. -vibackup=`echo $RECDIR/vi.*` -if [ "$vibackup" != "$RECDIR/vi.*" ]; then - for i in $vibackup; do - # Only test files that are readable. - if test ! -r $i; then - continue - fi - - # Unmodified nvi editor backup files either have the - # execute bit set or are zero length. Delete them. - if test -x $i -o ! -s $i; then - rm $i - fi - done -fi - -# It is possible to get incomplete recovery files, if the editor crashes -# at the right time. -virecovery=`echo $RECDIR/recover.*` -if [ "$virecovery" != "$RECDIR/recover.*" ]; then - for i in $virecovery; do - # Only test files that are readable. - if test ! -r $i; then - continue - fi - - # Delete any recovery files that are zero length, corrupted, - # or that have no corresponding backup file. Else send mail - # to the user. - recfile=`awk '/^X-vi-recover-path:/{print $2}' < $i` - if test -n "$recfile" -a -s "$recfile"; then - $SENDMAIL -t < $i - else - rm $i - fi - done -fi diff --git a/usr.bin/vi/vi/v_txt.c b/usr.bin/vi/vi/v_txt.c index b5cb4e4e0d5..18b837a174d 100644 --- a/usr.bin/vi/vi/v_txt.c +++ b/usr.bin/vi/vi/v_txt.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)v_txt.c 10.79 (Berkeley) 8/11/96"; +static const char sccsid[] = "@(#)v_txt.c 10.80 (Berkeley) 8/13/96"; #endif /* not lint */ #include <sys/types.h> @@ -2111,8 +2111,8 @@ retry: for (len = 0, /* Shift remaining text up, and move the cursor to the end. */ if (nlen) { - BINC_RET(sp, tp->lb, tp->lb_len, tp->len + nlen); off = p - tp->lb; + BINC_RET(sp, tp->lb, tp->lb_len, tp->len + nlen); p = tp->lb + off; tp->cno += nlen; @@ -2126,11 +2126,10 @@ retry: for (len = 0, /* If a single match and it's a directory, retry it. */ if (argc == 1 && !stat(cmd.argv[0]->bp, &sb) && S_ISDIR(sb.st_mode)) { -isdir: off = p - tp->lb; - p = tp->lb + off; - - if (tp->owrite == 0) { +isdir: if (tp->owrite == 0) { + off = p - tp->lb; BINC_RET(sp, tp->lb, tp->lb_len, tp->len + 1); + p = tp->lb + off; if (tp->insert != 0) (void)memmove(p + 1, p, tp->insert); ++tp->len; diff --git a/usr.bin/vi/vi/vi.c b/usr.bin/vi/vi/vi.c index e8592a4f729..f5befc138ab 100644 --- a/usr.bin/vi/vi/vi.c +++ b/usr.bin/vi/vi/vi.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)vi.c 10.53 (Berkeley) 8/11/96"; +static const char sccsid[] = "@(#)vi.c 10.55 (Berkeley) 8/17/96"; #endif /* not lint */ #include <sys/types.h> @@ -70,7 +70,6 @@ vi(spp) SCR *next, *sp; VICMD cmd, *vp; VI_PRIVATE *vip; - u_int flags; int comcount, mapped, rval; /* Get the first screen. */ @@ -379,10 +378,9 @@ intr: CLR_INTERRUPT(sp); /* * If the current screen is still displayed, it will - * want a new status line. + * need a new status line. */ - if (F_ISSET(sp, SC_STATUS) && vs_resolve(sp, 0)) - goto ret; + F_SET(sp, SC_STATUS); /* Switch screens, change focus. */ sp = sp->nextdisp; diff --git a/usr.bin/vi/vi/vs_msg.c b/usr.bin/vi/vi/vs_msg.c index adc7efb37c6..881a1c9e8dd 100644 --- a/usr.bin/vi/vi/vs_msg.c +++ b/usr.bin/vi/vi/vs_msg.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)vs_msg.c 10.73 (Berkeley) 6/28/96"; +static const char sccsid[] = "@(#)vs_msg.c 10.75 (Berkeley) 8/17/96"; #endif /* not lint */ #include <sys/types.h> @@ -40,7 +40,6 @@ typedef enum { static void vs_divider __P((SCR *)); static void vs_msgsave __P((SCR *, mtype_t, char *, size_t)); static void vs_output __P((SCR *, mtype_t, const char *, int)); -static int vs_scr_resolve __P((SCR *, int)); static void vs_scroll __P((SCR *, int *, sw_t)); static void vs_wait __P((SCR *, int *, sw_t)); @@ -572,7 +571,7 @@ vs_ex_resolve(sp, continuep) return (0); } - /* Clear the required wait flag -- we're going to wait. */ + /* Clear the required wait flag, it's no longer needed. */ F_CLR(sp, SC_EX_WAIT_YES); /* @@ -645,39 +644,16 @@ vs_ex_resolve(sp, continuep) /* * vs_resolve -- - * Cycle through each screen, dealing with message output. + * Deal with message output. * * This routine is called from the main vi loop to periodically ensure that * the user has seen any messages that have been displayed. - * - * PUBLIC: int vs_resolve __P((SCR *, int)); */ int vs_resolve(sp, forcewait) SCR *sp; int forcewait; { - SCR *tsp; - - for (tsp = sp->gp->dq.cqh_first; - tsp != (void *)&sp->gp->dq; tsp = tsp->q.cqe_next) - if (vs_scr_resolve(tsp, forcewait)) - return (1); - return (0); -} - -/* - * vs_scr_resolve -- - * Deal with message output. - * - * This routine is called from the main vi loop to periodically ensure that - * the user has seen any messages that have been displayed. - */ -static int -vs_scr_resolve(sp, forcewait) - SCR *sp; - int forcewait; -{ EVENT ev; GS *gp; MSGS *mp; diff --git a/usr.bin/vi/vi/vs_refresh.c b/usr.bin/vi/vi/vs_refresh.c index 604fabc50e5..e4c5e9247a7 100644 --- a/usr.bin/vi/vi/vs_refresh.c +++ b/usr.bin/vi/vi/vs_refresh.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)vs_refresh.c 10.37 (Berkeley) 6/12/96"; +static const char sccsid[] = "@(#)vs_refresh.c 10.39 (Berkeley) 8/17/96"; #endif /* not lint */ #include <sys/types.h> @@ -73,16 +73,32 @@ vs_refresh(sp, forcepaint) * 1: Refresh the screen. * * If SC_SCR_REDRAW is set in the current screen, repaint everything - * that we can find. + * that we can find, including status lines. */ if (F_ISSET(sp, SC_SCR_REDRAW)) for (tsp = sp->gp->dq.cqh_first; tsp != (void *)&sp->gp->dq; tsp = tsp->q.cqe_next) if (tsp != sp) - F_SET(tsp, SC_SCR_REDRAW); + F_SET(tsp, SC_SCR_REDRAW | SC_STATUS); /* - * 2: Related or dirtied screens, or screens with messages. + * 2: Paint any missing status lines. + * + * XXX + * This is fairly evil. Status lines are written using the vi message + * mechanism, since we have no idea how long they are. Since we may be + * painting screens other than the current one, we don't want want to + * make the user wait. We depend heavily on there not being any other + * lines currently waiting to be displayed and the message truncation + * code in the msgq_status routine working. + */ + for (tsp = sp->gp->dq.cqh_first; + tsp != (void *)&sp->gp->dq; tsp = tsp->q.cqe_next) + if (F_ISSET(tsp, SC_STATUS)) + vs_resolve(tsp, 0); + + /* + * 3: Related or dirtied screens, or screens with messages. * * If related screens share a view into a file, they may have been * modified as well. Refresh any screens that aren't exiting that @@ -106,7 +122,7 @@ vs_refresh(sp, forcepaint) } /* - * 3: Refresh the current screen. + * 4: Refresh the current screen. * * Always refresh the current screen, it may be a cursor movement. * Also, always do it last -- that way, SC_SCR_REDRAW can be set @@ -158,7 +174,7 @@ vs_paint(sp, flags) didpaint = leftright_warp = 0; /* - * 4: Reformat the lines. + * 5: Reformat the lines. * * If the lines themselves have changed (:set list, for example), * fill in the map from scratch. Adjust the screen that's being @@ -183,12 +199,12 @@ vs_paint(sp, flags) } /* - * 5: Line movement. + * 6: Line movement. * * Line changes can cause the top line to change as well. As * before, if the movement is large, the screen is repainted. * - * 5a: Small screens. + * 6a: Small screens. * * Users can use the window, w300, w1200 and w9600 options to make * the screen artificially small. The behavior of these options @@ -259,7 +275,7 @@ small_fill: (void)gp->scr_move(sp, LASTLINE(sp), 0); } /* - * 5b: Line down, or current screen. + * 6b: Line down, or current screen. */ if (LNO >= HMAP->lno) { /* Current screen. */ @@ -285,7 +301,7 @@ small_fill: (void)gp->scr_move(sp, LASTLINE(sp), 0); } /* - * 5c: If not on the current screen, may request center or top. + * 6c: If not on the current screen, may request center or top. */ if (F_ISSET(sp, SC_SCR_TOP)) goto top; @@ -293,7 +309,7 @@ small_fill: (void)gp->scr_move(sp, LASTLINE(sp), 0); goto middle; /* - * 5d: Line up. + * 6d: Line up. */ lcnt = vs_sm_nlines(sp, HMAP, LNO, HALFTEXT(sp)); if (lcnt < HALFTEXT(sp)) { @@ -401,7 +417,7 @@ adjust: if (!O_ISSET(sp, O_LEFTRIGHT) && } /* - * 6: Cursor movements (current screen only). + * 7: Cursor movements (current screen only). */ if (!LF_ISSET(UPDATE_CURSOR)) goto number; @@ -455,7 +471,7 @@ adjust: if (!O_ISSET(sp, O_LEFTRIGHT) && */ if (CNO < OCNO) { /* - * 6a: Cursor moved left. + * 7a: Cursor moved left. * * Point to the old character. The old cursor position can * be past EOL if, for example, we just deleted the rest of @@ -507,7 +523,7 @@ adjust: if (!O_ISSET(sp, O_LEFTRIGHT) && SCNO -= cwtotal; } else { /* - * 6b: Cursor moved right. + * 7b: Cursor moved right. * * Point to the first character to the right. */ @@ -538,7 +554,7 @@ adjust: if (!O_ISSET(sp, O_LEFTRIGHT) && } /* - * 6c: Fast cursor update. + * 7c: Fast cursor update. * * We have the current column, retrieve the current row. */ @@ -546,14 +562,14 @@ fast: (void)gp->scr_cursor(sp, &y, ¬used); goto done_cursor; /* - * 6d: Slow cursor update. + * 7d: Slow cursor update. * * Walk through the map and find the current line. */ slow: for (smp = HMAP; smp->lno != LNO; ++smp); /* - * 6e: Leftright scrolling adjustment. + * 7e: Leftright scrolling adjustment. * * If doing left-right scrolling and the cursor movement has changed * the displayed screen, scroll the screen left or right, unless we're @@ -625,7 +641,7 @@ slow: for (smp = HMAP; smp->lno != LNO; ++smp); goto done_cursor; /* - * 7: Repaint the entire screen. + * 8: Repaint the entire screen. * * Lost big, do what you have to do. We flush the cache, since * SC_SCR_REDRAW gets set when the screen isn't worth fixing, and @@ -663,13 +679,13 @@ done_cursor: #endif /* - * 8: Set the remembered cursor values. + * 9: Set the remembered cursor values. */ OCNO = CNO; OLNO = LNO; /* - * 9: Repaint the line numbers. + * 10: Repaint the line numbers. * * If O_NUMBER is set and the VIP_N_RENUMBER bit is set, and we * didn't repaint the screen, repaint all of the line numbers, @@ -680,7 +696,7 @@ number: if (O_ISSET(sp, O_NUMBER) && return (1); /* - * 10: Update the mode line, position the cursor, and flush changes. + * 11: Update the mode line, position the cursor, and flush changes. * * If we warped the screen, we have to refresh everything. */ @@ -709,7 +725,7 @@ number: if (O_ISSET(sp, O_NUMBER) && if (LF_ISSET(UPDATE_SCREEN)) (void)gp->scr_refresh(sp, F_ISSET(vip, VIP_N_EX_PAINT)); - /* 11: Clear the flags that are handled by this routine. */ + /* 12: Clear the flags that are handled by this routine. */ F_CLR(sp, SC_SCR_CENTER | SC_SCR_REDRAW | SC_SCR_REFORMAT | SC_SCR_TOP); F_CLR(vip, VIP_CUR_INVALID | VIP_N_EX_PAINT | VIP_N_REFRESH | VIP_N_RENUMBER | VIP_S_MODELINE); @@ -741,6 +757,7 @@ vs_modeline(sp) GS *gp; size_t cols, curcol, curlen, endpoint, len, midpoint; const char *t; + int ellipsis; char *p, buf[20]; gp = sp->gp; @@ -755,32 +772,44 @@ vs_modeline(sp) * Leave the last character blank, in case it's a really dumb terminal * with hardware scroll. Second, don't paint the last character in the * screen, SunOS 4.1.1 and Ultrix 4.2 curses won't let you. + * + * Move to the last line on the screen. */ - cols = sp->cols - 1; + (void)gp->scr_move(sp, LASTLINE(sp), 0); + /* If more than one screen in the display, show the file name. */ curlen = 0; - for (p = sp->frp->name; *p != '\0'; ++p); - while (--p > sp->frp->name) { - if (*p == '/') { - ++p; - break; + if (IS_SPLIT(sp)) { + for (p = sp->frp->name; *p != '\0'; ++p); + for (ellipsis = 0, cols = sp->cols / 2; --p > sp->frp->name;) { + if (*p == '/') { + ++p; + break; + } + if ((curlen += KEY_LEN(sp, *p)) > cols) { + ellipsis = 3; + curlen += + KEY_LEN(sp, '.') * 3 + KEY_LEN(sp, ' '); + while (curlen > cols) { + ++p; + curlen -= KEY_LEN(sp, *p); + } + break; + } } - if ((curlen += KEY_LEN(sp, *p)) > cols) { - curlen -= KEY_LEN(sp, *p); - ++p; - break; + if (ellipsis) { + while (ellipsis--) + (void)gp->scr_addstr(sp, + KEY_NAME(sp, '.'), KEY_LEN(sp, '.')); + (void)gp->scr_addstr(sp, + KEY_NAME(sp, ' '), KEY_LEN(sp, ' ')); } - } - - /* - * Move to the last line on the screen. If more than one screen in - * the display, show the file name. Clear the rest of the line. - */ - (void)gp->scr_move(sp, LASTLINE(sp), 0); - if (IS_SPLIT(sp)) for (; *p != '\0'; ++p) (void)gp->scr_addstr(sp, KEY_NAME(sp, *p), KEY_LEN(sp, *p)); + } + + /* Clear the rest of the line. */ (void)gp->scr_clrtoeol(sp); /* @@ -794,9 +823,11 @@ vs_modeline(sp) * Assume that numbers, commas, and spaces only take up a single * column on the screen. */ + cols = sp->cols - 1; if (O_ISSET(sp, O_RULER)) { vs_column(sp, &curcol); - len = snprintf(buf, sizeof(buf), "%lu,%lu", sp->lno, curcol + 1); + len = + snprintf(buf, sizeof(buf), "%lu,%lu", sp->lno, curcol + 1); midpoint = (cols - ((len + 1) / 2)) / 2; if (curlen < midpoint) { |