From owner-svn-src-head@FreeBSD.ORG Sun Apr 26 09:47:41 2015 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6E7FE8B4; Sun, 26 Apr 2015 09:47:41 +0000 (UTC) Received: from mail-pa0-x22d.google.com (mail-pa0-x22d.google.com [IPv6:2607:f8b0:400e:c03::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 39D471F45; Sun, 26 Apr 2015 09:47:41 +0000 (UTC) Received: by pabtp1 with SMTP id tp1so96529765pab.2; Sun, 26 Apr 2015 02:47:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=references:mime-version:in-reply-to:content-type :content-transfer-encoding:message-id:cc:from:subject:date:to; bh=2jiO5WOKvkgH7YXd9jTYjZJRn09PnfSAzx48AFE/8xQ=; b=vN4joQdUz+UIbMlUXHZWKVC/0cLg4kTG//XDc/HOLlNT+kLd/MHURwbxOkXeN+ryza ADWdf+0vOv06AWCbFSxZ3Y3AIzKYuYy0fX+P/lB+DLT1XnRLMf9JIPUPEXQ+snCWh6l/ FH8REtUn72gG2DDaqXGaefJv9Au4h+2DY9L2gfIWKzV8rPkfJ4Kx+t2znJQOz5P20HyZ yI8o+tvyc63E2C9kYg6WiT/PyoWfK3AqzpjPU+9aILAcc656qdjdlS8x3BFOFD9qbEvY XCU6XFfCThAHaBKPTFeJyzUy48zl1IIQGmDv/gXNmulL2DTP12XqwVbEEv7+NGrEBdIH BhWA== X-Received: by 10.66.242.79 with SMTP id wo15mr12696754pac.6.1430041660587; Sun, 26 Apr 2015 02:47:40 -0700 (PDT) Received: from [192.168.20.11] (c-98-247-240-204.hsd1.wa.comcast.net. [98.247.240.204]) by mx.google.com with ESMTPSA id sm7sm16185581pac.45.2015.04.26.02.47.39 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 26 Apr 2015 02:47:39 -0700 (PDT) References: <201504260752.t3Q7qi0s063835@svn.freebsd.org> Mime-Version: 1.0 (1.0) In-Reply-To: <201504260752.t3Q7qi0s063835@svn.freebsd.org> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Message-Id: Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" X-Mailer: iPhone Mail (12F70) From: Garrett Cooper Subject: Re: svn commit: r281994 - in head: . share/doc/usd share/doc/usd/10.exref share/doc/usd/10.exref/exref share/doc/usd/10.exref/summary share/doc/usd/11.vitut share/doc/usd/12.vi share/doc/usd/12.vi/summ... Date: Sun, 26 Apr 2015 02:47:37 -0700 To: Baptiste Daroussin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Apr 2015 09:47:41 -0000 This broke the build ;/.. > On Apr 26, 2015, at 00:52, Baptiste Daroussin wrote: >=20 > Author: bapt > Date: Sun Apr 26 07:52:43 2015 > New Revision: 281994 > URL: https://svnweb.freebsd.org/changeset/base/281994 >=20 > Log: > Reincorporate documentation lost with update to nvi 2.1.3 >=20 > Added: > head/share/doc/usd/10.exref/ > - copied from r281378, head/share/doc/usd/10.exref/ > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/exref/e= x.rm > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/exref/e= x.summary > head/share/doc/usd/11.vitut/ > - copied from r281378, head/share/doc/usd/11.vitut/ > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/edit/ed= ittut.ms > head/share/doc/usd/12.vi/ > - copied from r281378, head/share/doc/usd/12.vi/ > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vitut/v= i.summary > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vitut/v= i.in > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vitut/v= i.apwh.ms > head/share/doc/usd/13.viref/ > - copied from r281378, head/share/doc/usd/13.viref/ > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vi.ref/= ex.cmd.roff > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vi.ref/= ref.so > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vi.ref/= set.opt.roff > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vi.ref/= vi.cmd.roff > - copied unchanged from r281372, head/contrib/nvi/docs/USD.doc/vi.ref/= vi.ref > Directory Properties: > head/share/doc/usd/10.exref/exref/ex.rm (props changed) > head/share/doc/usd/10.exref/summary/ex.summary (props changed) > head/share/doc/usd/11.vitut/edittut.ms (props changed) > head/share/doc/usd/12.vi/summary/vi.summary (props changed) > head/share/doc/usd/12.vi/vi/vi.in (props changed) > head/share/doc/usd/12.vi/viapwh/vi.apwh.ms (props changed) > head/share/doc/usd/13.viref/ex.cmd.roff (props changed) > head/share/doc/usd/13.viref/ref.so (props changed) > head/share/doc/usd/13.viref/set.opt.roff (props changed) > head/share/doc/usd/13.viref/vi.cmd.roff (props changed) > head/share/doc/usd/13.viref/vi.ref (props changed) > Modified: > head/ObsoleteFiles.inc > head/share/doc/usd/10.exref/Makefile.inc > head/share/doc/usd/11.vitut/Makefile > head/share/doc/usd/12.vi/Makefile.inc > head/share/doc/usd/13.viref/Makefile > head/share/doc/usd/Makefile >=20 > Modified: head/ObsoleteFiles.inc > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > --- head/ObsoleteFiles.inc Sun Apr 26 06:52:19 2015 (r281993) > +++ head/ObsoleteFiles.inc Sun Apr 26 07:52:43 2015 (r281994) > @@ -56,18 +56,6 @@ OLD_FILES+=3Dusr/include/altq/altq_rmclass > OLD_FILES+=3Dusr/include/altq/altq_cbq.h > OLD_FILES+=3Dusr/include/altq/altq_rio.h > OLD_DIRS+=3Dusr/include/altq > -# 20150410 > -OLD_FILES+=3Dusr/share/doc/usd/10.exref/paper.ascii.gz > -OLD_FILES+=3Dusr/share/doc/usd/10.exref/summary.ascii.gz > -OLD_DIRS+=3Dusr/share/doc/usd/10.exref > -OLD_FILES+=3Dusr/share/doc/usd/11.edit/paper.ascii.gz > -OLD_DIRS+=3Dusr/share/doc/usd/11.edit > -OLD_FILES+=3Dusr/share/doc/usd/12.vi/paper.ascii.gz > -OLD_FILES+=3Dusr/share/doc/usd/12.vi/summary.ascii.gz > -OLD_FILES+=3Dusr/share/doc/usd/12.vi/viapwh.ascii.gz > -OLD_DIRS+=3Dusr/share/doc/usd/12.vi > -OLD_FILES+=3Dusr/share/doc/usd/13.viref/paper.ascii.gz > -OLD_DIRS+=3Dusr/share/doc/usd/13.viref > # 20150329 > .if ${TARGET_ARCH} =3D=3D "arm" > OLD_FILES+=3Dusr/include/bootconfig.h >=20 > Modified: head/share/doc/usd/10.exref/Makefile.inc > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > --- head/share/doc/usd/10.exref/Makefile.inc Fri Apr 10 19:04:39 2015 = (r281378) > +++ head/share/doc/usd/10.exref/Makefile.inc Sun Apr 26 07:52:43 2015 = (r281994) > @@ -2,4 +2,3 @@ >=20 > VOLUME=3D usd/10.exref > MACROS=3D -ms > -SRCDIR=3D ${.CURDIR}/../../../../../contrib/nvi/docs/USD.doc/exref >=20 > Copied: head/share/doc/usd/10.exref/exref/ex.rm (from r281372, head/contri= b/nvi/docs/USD.doc/exref/ex.rm) > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/share/doc/usd/10.exref/exref/ex.rm Sun Apr 26 07:52:43 2015 = (r281994, copy of r281372, head/contrib/nvi/docs/USD.doc/exref/ex.rm) > @@ -0,0 +1,2213 @@ > +.\" Copyright (c) 1980, 1993 > +.\" 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 th= e > +.\" documentation and/or other materials provided with the distributio= n. > +.\" 3. All advertising materials mentioning features or use of this softw= are > +.\" 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 contributo= rs > +.\" may be used to endorse or promote products derived from this softw= are > +.\" without specific prior written permission. > +.\" > +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' A= ND > +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE= > +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU= RPOSE > +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIA= BLE > +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUE= NTIAL > +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOO= DS > +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)= > +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, S= TRICT > +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY= WAY > +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O= F > +.\" SUCH DAMAGE. > +.\" > +.\" @(#)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 > +.de ZP > +.nr pd \\n()P > +.nr )P 0 > +.if \\n(.$=3D0 .IP > +.if \\n(.$=3D1 .IP "\\$1" > +.if \\n(.$>=3D2 .IP "\\$1" "\\$2" > +.nr )P \\n(pd > +.rm pd > +.. > +.de LC > +.br > +.sp .1i > +.ne 4 > +.LP > +.ta 4.0i > +.. > +.bd S B 3 > +.\".RP > +.TL > +Ex Reference Manual > +.br > +Version 3.7 > +.AU > +William Joy > +.AU > +Mark Horton > +.AI > +Computer Science Division > +Department of Electrical Engineering and Computer Science > +University of California, Berkeley > +Berkeley, Ca. 94720 > +.AB > +.I Ex > +a line oriented text editor, which supports both command and display > +oriented editing. > +This reference manual describes the command oriented part of > +.I ex; > +the display editing features of > +.I ex > +are described in > +.I "An Introduction to Display Editing with Vi." > +Other documents about the editor include the introduction > +.I "Edit: A tutorial", > +the > +.I "Ex/edit Command Summary", > +and a > +.I "Vi Quick Reference" > +card. > +.AE > +.NH 1 > +Starting ex > +.PP > +.FS > +The financial support of an \s-2IBM\s0 Graduate Fellowship and the Nation= al > +Science Foundation under grants MCS74-07644-A03 and MCS78-07291 is gratef= ully > +acknowledged. > +.FE > +Each instance of the editor has a set of options, > +which can be set to tailor it to your liking. > +The command > +.I edit > +invokes a version of > +.I ex > +designed for more casual or beginning > +users by changing the default settings of some of these options. > +To simplify the description which follows we > +assume the default settings of the options. > +.PP > +When invoked, > +.I ex > +determines the terminal type from the \s-2TERM\s0 variable in the environ= ment. > +It there is a \s-2TERMCAP\s0 variable in the environment, and the type > +of the terminal described there matches the \s-2TERM\s0 variable, > +then that description > +is used. Also if the \s-2TERMCAP\s0 variable contains a pathname (beginn= ing > +with a \fB/\fR) then the editor will seek the description of the terminal= > +in that file (rather than the default /etc/termcap). > +If there is a variable \s-2EXINIT\s0 in the environment, then the editor > +will execute the commands in that variable, > +otherwise if there is a file > +.I \&.exrc > +in your \s-2HOME\s0 directory > +.I ex > +reads commands from that file, simulating a > +.I source > +command. > +Option setting commands placed in > +\s-2EXINIT\s0 or > +.I \&.exrc > +will be executed before each editor session. > +.PP > +A command to enter > +.I ex > +has the following prototype:\(dg > +.FS > +\(dg Brackets `[' `]' surround optional parameters here. > +.FE > +.DS > +\fBex\fP [ \fB\-\fP ] [ \fB\-v\fP ] [ \fB\-t\fP \fItag\fP ] [ \fB\-r\fP ]= [ \fB\-l\fP ] [ \fB\-w\fP\fIn\fP ] [ \fB\-x\fP ] [ \fB\-R\fP ] [ \fB+\fP\fI= command\fP ] name ... > +.DE > +The most common case edits a single file with no options, i.e.: > +.DS > +\fBex\fR name > +.DE > +The > +.B \- > +command line option > +option suppresses all interactive-user feedback > +and is useful in processing editor scripts in command files. > +The > +.B \-v > +option is equivalent to using > +.I vi > +rather than > +.I ex. > +The > +.B \-t > +option is equivalent to an initial > +.I tag > +command, editing the file containing the > +.I tag > +and positioning the editor at its definition. > +The > +.B \-r > +option is used in recovering after an editor or system crash, > +retrieving the last saved version of the named file or, > +if no file is specified, > +typing a list of saved files. > +The > +.B \-l > +option sets up for editing \s-2LISP\s0, setting the > +.I showmatch > +and > +.I lisp > +options. > +The > +.B \-w > +option sets the default window size to > +.I n, > +and is useful on dialups to start in small windows. > +The > +.B \-x > +option causes > +.I ex > +to prompt for a > +.I key , > +which is used to encrypt and decrypt the contents of the file, > +which should already be encrypted using the same key, > +see > +.I crypt (1). > +The > +.B \-R > +option sets the > +.I readonly > +option at the start. > +.I Name > +arguments indicate files to be edited. > +An argument of the form > +\fB+\fIcommand\fR > +indicates that the editor should begin by executing the specified command= . > +If > +.I command > +is omitted, then it defaults to ``$'', positioning the editor at the last= > +line of the first file initially. Other useful commands here are scannin= g > +patterns of the form ``/pat'' or line numbers, e.g. ``+100'' starting > +at line 100. > +.NH 1 > +File manipulation > +.NH 2 > +Current file > +.PP > +.I Ex > +is normally editing the contents of a single file, > +whose name is recorded in the > +.I current > +file name. > +.I Ex > +performs all editing actions in a buffer > +(actually a temporary file) > +into which the text of the file is initially read. > +Changes made to the buffer have no effect on the file being > +edited unless and until the buffer contents are written out to the > +file with a > +.I write > +command. > +After the buffer contents are written, > +the previous contents of the written file are no longer accessible. > +When a file is edited, > +its name becomes the current file name, > +and its contents are read into the buffer. > +.PP > +The current file is almost always considered to be > +.I edited. > +This means that the contents of the buffer are logically > +connected with the current file name, > +so that writing the current buffer contents onto that file, > +even if it exists, > +is a reasonable action. > +If the current file is not=20 > +.I edited > +then > +.I ex > +will not normally write on it if it already exists.* > +.FS > +* The > +.I file > +command will say ``[Not edited]'' if the current file is not considered > +edited. > +.FE > +.NH 2 > +Alternate file > +.PP > +Each time a new value is given to the current file name, > +the previous current file name is saved as the > +.I alternate > +file name. > +Similarly if a file is mentioned but does not become the current file, > +it is saved as the alternate file name. > +.NH 2 > +Filename expansion > +.PP > +Filenames within the editor may be specified using the normal > +shell expansion conventions. > +In addition, > +the character `%' in filenames is replaced by the > +.I current > +file name and the character > +`#' by the > +.I alternate > +file name.\(dg > +.FS > +\(dg This makes it easy to deal alternately with > +two files and eliminates the need for retyping the > +name supplied on an > +.I edit > +command after a=20 > +.I "No write since last change" > +diagnostic is received. > +.FE > +.NH 2 > +Multiple files and named buffers > +.PP > +If more than one file is given on the command line, > +then the first file is edited as described above. > +The remaining arguments are placed with the first file in the > +.I "argument list." > +The current argument list may be displayed with the > +.I args > +command. > +The next file in the argument list may be edited with the > +.I next > +command. > +The argument list may also be respecified by specifying > +a list of names to the > +.I next > +command. > +These names are expanded, > +the resulting list of names becomes the new argument list, > +and > +.I ex > +edits the first file on the list. > +.PP > +For saving blocks of text while editing, and especially when editing > +more than one file, > +.I ex > +has a group of named buffers. > +These are similar to the normal buffer, except that only a limited number= > +of operations are available on them. > +The buffers have names > +.I a > +through > +.I z.\(dd > +.FS > +\(dd It is also possible to refer to > +.I A > +through > +.I Z; > +the upper case buffers are the same as the lower but commands > +append to named buffers rather than replacing > +if upper case names are used. > +.FE > +.NH 2 > +Read only > +.PP > +It is possible to use > +.I ex > +in > +.I "read only" > +mode to look at files that you have no intention of modifying. > +This mode protects you from accidently overwriting the file. > +Read only mode is on when the > +.I readonly > +option is set. > +It can be turned on with the > +.B \-R > +command line option, > +by the > +.I view > +command line invocation, > +or by setting the > +.I readonly > +option. > +It can be cleared by setting > +.I noreadonly . > +It is possible to write, even while in read only mode, by indicating > +that you really know what you are doing. > +You can write to a different file, or can use the ! form of write, > +even while in read only mode. > +.NH 1 > +Exceptional Conditions > +.NH 2 > +Errors and interrupts > +.PP > +When errors occur > +.I ex > +(optionally) rings the terminal bell and, in any case, prints an error > +diagnostic. If the primary input is from a file, editor processing > +will terminate. If an interrupt signal is received, > +.I ex > +prints ``Interrupt'' and returns to its command level. If the primary > +input is a file, then > +.I ex > +will exit when this occurs. > +.NH 2 > +Recovering from hangups and crashes > +.PP > +If a hangup signal is received and the buffer has been modified since > +it was last written out, or if the system crashes, either the editor > +(in the first case) or the system (after it reboots in the second) will > +attempt to preserve the buffer. The next time you log in you should be > +able to recover the work you were doing, losing at most a few lines of > +changes from the last point before the hangup or editor crash. To > +recover a file you can use the > +.B \-r > +option. If you were editing the file > +.I resume, > +then you should change > +to the directory where you were when the crash occurred, giving the comma= nd > +.DS > +\fBex \-r\fP\fI resume\fP > +.DE > +After checking that the retrieved file is indeed ok, you can > +.I write > +it over the previous contents of that file. > +.PP > +You will normally get mail from the system telling you when a file has > +been saved after a crash. The command > +.DS > +\fBex\fP \-\fBr\fP > +.DE > +will print a list of the files which have been saved for you. > +(In the case of a hangup, > +the file will not appear in the list, > +although it can be recovered.) > +.NH 1 > +Editing modes > +.PP > +.I Ex > +has five distinct modes. The primary mode is > +.I command > +mode. Commands are entered in command mode when a `:' prompt is > +present, and are executed each time a complete line is sent. In > +.I "text input" > +mode > +.I ex > +gathers input lines and places them in the file. The > +.I append, > +.I insert, > +and > +.I change > +commands use text input mode. > +No prompt is printed when you are in text input mode. > +This mode is left by typing a `.' alone at the beginning of a line, and > +.I command > +mode resumes. > +.PP > +The last three modes are > +.I open > +and > +.I visual > +modes, entered by the commands of the same name, and, within open and > +visual modes > +.I "text insertion" > +mode. > +.I Open > +and > +.I visual > +modes allow local editing operations to be performed on the text in the > +file. The > +.I open > +command displays one line at a time on any terminal while > +.I visual > +works on \s-2CRT\s0 terminals with random positioning cursors, using the > +screen as a (single) window for file editing changes. > +These modes are described (only) in > +.I "An Introduction to Display Editing with Vi." > +.NH=20 > +Command structure > +.PP > +Most command names are English words, > +and initial prefixes of the words are acceptable abbreviations. > +The ambiguity of abbreviations is resolved in favor of the more commonly > +used commands.* > +.FS > +* As an example, the command=20 > +.I substitute > +can be abbreviated `s' > +while the shortest available abbreviation for the=20 > +.I set > +command is `se'. > +.FE > +.NH 2 > +Command parameters > +.PP > +Most commands accept prefix addresses specifying the lines in the file > +upon which they are to have effect. > +The forms of these addresses will be discussed below. > +A number of commands also may take a trailing > +.I count > +specifying the number of lines to be involved in the command.\(dg > +.FS > +\(dg Counts are rounded down if necessary. > +.FE > +Thus the command ``10p'' will print the tenth line in the buffer while > +``delete 5'' will delete five lines from the buffer, > +starting with the current line. > +.PP > +Some commands take other information or parameters, > +this information always being given after the command name.\(dd > +.FS > +\(dd Examples would be option names in a > +.I set > +command i.e. ``set number'', > +a file name in an > +.I edit > +command, > +a regular expression in a > +.I substitute > +command, > +or a target address for a > +.I copy > +command, i.e. ``1,5 copy 25''. > +.FE > +.NH 2 > +Command variants > +.PP > +A number of commands have two distinct variants. > +The variant form of the command is invoked by placing an > +`!' immediately after the command name. > +Some of the default variants may be controlled by options; > +in this case, the `!' serves to toggle the default. > +.NH 2 > +Flags after commands > +.PP > +The characters `#', `p' and `l' may be placed after many commands.** > +.FS > +** > +A `p' or `l' must be preceded by a blank or tab > +except in the single special case `dp'. > +.FE > +In this case, the command abbreviated by these characters > +is executed after the command completes. > +Since > +.I ex > +normally prints the new current line after each change, `p' is rarely nec= essary. > +Any number of `+' or `\-' characters may also be given with these flags. > +If they appear, the specified offset is applied to the current line > +value before the printing command is executed. > +.NH 2 > +Comments > +.PP > +It is possible to give editor commands which are ignored. > +This is useful when making complex editor scripts > +for which comments are desired. > +The comment character is the double quote: ". > +Any command line beginning with " is ignored. > +Comments beginning with " may also be placed at the ends > +of commands, except in cases where they could be confused as part > +of text (shell escapes and the substitute and map commands). > +.NH 2 > +Multiple commands per line > +.PP > +More than one command may be placed on a line by separating each pair > +of commands by a `|' character. > +However the > +.I global > +commands, > +comments, > +and the shell escape `!' > +must be the last command on a line, as they are not terminated by a `|'. > +.NH 2 > +Reporting large changes > +.PP > +Most commands which change the contents of the editor buffer give > +feedback if the scope of the change exceeds a threshold given by the > +.I report > +option. > +This feedback helps to detect undesirably large changes so that they may > +be quickly and easily reversed with an > +.I undo. > +After commands with more global effect such as > +.I global > +or > +.I visual, > +you will be informed if the net change in the number of lines > +in the buffer during this command exceeds this threshold. > +.NH 1 > +Command addressing > +.NH 2 > +Addressing primitives > +.IP \fB.\fR 20 > +The current line. > +Most commands leave the current line as the last line which they affect. > +The default address for most commands is the current line, > +thus `\fB.\fR' is rarely used alone as an address. > +.IP \fIn\fR 20 > +The \fIn\fRth line in the editor's buffer, lines being numbered > +sequentially from 1. > +.IP \fB$\fR 20 > +The last line in the buffer. > +.IP \fB%\fR 20 > +An abbreviation for ``1,$'', the entire buffer. > +.IP \fI+n\fR\ \fI\-n\fR 20 > +An offset relative to the current buffer line.\(dg > +.FS > +\(dg > +The forms `.+3' `+3' and `+++' are all equivalent; > +if the current line is line 100 they all address line 103. > +.FE > +.IP \fB/\fIpat\fR\fB/\fR\ \fB?\fIpat\fR\fB?\fR 20 > +Scan forward and backward respectively for a line containing \fIpat\fR, a= > +regular expression (as defined below). The scans normally wrap around th= e end > +of the buffer. > +If all that is desired is to print the next line containing \fIpat\fR, th= en > +the trailing \fB/\fR or \fB?\fR may be omitted. > +If \fIpat\fP is omitted or explicitly empty, then the last > +regular expression specified is located.\(dd > +.FS > +\(dd The forms \fB\e/\fP and \fB\e?\fP scan > +using the last regular expression used in a scan; after a substitute > +\fB//\fP and \fB??\fP would scan using the substitute's regular expressio= n. > +.FE > +.IP \fB\(aa\(aa\fP\ \fB\(aa\fP\fIx\fP 20 > +Before each non-relative motion of the current line `\fB.\fP', > +the previous current line is marked with a tag, subsequently referred to a= s > +`\(aa\(aa'. > +This makes it easy to refer or return to this previous context. > +Marks may also be established by the > +.I mark > +command, using single lower case letters > +.I x > +and the marked lines referred to as > +`\(aa\fIx\fR'. > +.NH 2 > +Combining addressing primitives > +.PP > +Addresses to commands consist of a series of addressing primitives, > +separated by `,' or `;'. > +Such address lists are evaluated left-to-right. > +When addresses are separated by `;' the current line `\fB.\fR' > +is set to the value of the previous addressing expression > +before the next address is interpreted. > +If more addresses are given than the command requires, > +then all but the last one or two are ignored. > +If the command takes two addresses, the first addressed line must > +precede the second in the buffer.\(dg > +.FS > +\(dg Null address specifications are permitted in a list of addresses, > +the default in this case is the current line `.'; > +thus `,100' is equivalent to `\fB.\fR,100'. > +It is an error to give a prefix address to a command which expects none. > +.FE > +.NH 1 > +Command descriptions > +.PP > +The following form is a prototype for all > +.I ex > +commands: > +.DS > +\fIaddress\fR \fBcommand\fR \fI! parameters count flags\fR > +.DE > +All parts are optional; the degenerate case is the empty command which pr= ints > +the next line in the file. For sanity with use from within > +.I visual > +mode, > +.I ex > +ignores a ``:'' preceding any command. > +.PP > +In the following command descriptions, the > +default addresses are shown in parentheses, > +which are > +.I not, > +however, > +part of the command. > +.LC > +\fBabbreviate\fR \fIword rhs\fP abbr: \fBab\fP > +.ZP > +Add the named abbreviation to the current list. > +When in input mode in visual, if > +.I word > +is typed as a complete word, it will be changed to > +.I rhs . > +.LC > +( \fB.\fR ) \fBappend\fR abbr: \fBa\fR > +.br > +\fItext\fR > +.br > +\&\fB.\fR > +.ZP > +Reads the input text and places it after the specified line. > +After the command, `\fB.\fR' > +addresses the last line input or the > +specified line if no lines were input. > +If address `0' is given, > +text is placed at the beginning of the buffer. > +.LC > +\fBa!\fR > +.br > +\fItext\fR > +.br > +\&\fB.\fR > +.ZP > +The variant flag to > +.I append > +toggles the setting for the > +.I autoindent > +option during the input of > +.I text. > +.LC > +\fBargs\fR > +.ZP > +The members of the argument list are printed, with the current argument > +delimited by `[' and `]'. > +.ig > +.PP > +\fBcd\fR \fIdirectory\fR > +.ZP > +The > +.I cd > +command is a synonym for > +.I chdir. > +.. > +.LC > +( \fB.\fP , \fB.\fP ) \fBchange\fP \fIcount\fP abbr: \fBc\fP > +.br > +\fItext\fP > +.br > +\&\fB.\fP > +.ZP > +Replaces the specified lines with the input \fItext\fP. > +The current line becomes the last line input; > +if no lines were input it is left as for a > +\fIdelete\fP. > +.LC > +\fBc!\fP > +.br > +\fItext\fP > +.br > +\&\fB.\fP > +.ZP > +The variant toggles > +.I autoindent > +during the > +.I change. > +.ig > +.LC > +\fBchdir\fR \fIdirectory\fR > +.ZP > +The specified \fIdirectory\fR becomes the current directory. > +If no directory is specified, the current value of the > +.I home > +option is used as the target directory. > +After a > +.I chdir > +the current file is not considered to have been > +edited so that write restrictions on pre-existing files apply. > +.. > +.LC > +( \fB.\fP , \fB.\fP )\|\fBcopy\fP \fIaddr\fP \fIflags\fP abbr: \fBco\f= P > +.ZP > +A > +.I copy > +of the specified lines is placed after > +.I addr, > +which may be `0'. > +The current line > +`\fB.\fR' > +addresses the last line of the copy. > +The command > +.I t > +is a synonym for > +.I copy. > +.LC > +( \fB.\fR , \fB.\fR )\|\fBdelete\fR \fIbuffer\fR \fIcount\fR \fIflags\fR = abbr: \fBd\fR > +.ZP > +Removes the specified lines from the buffer. > +The line after the last line deleted becomes the current line; > +if the lines deleted were originally at the end, > +the new last line becomes the current line. > +If a named > +.I buffer > +is specified by giving a letter, > +then the specified lines are saved in that buffer, > +or appended to it if an upper case letter is used. > +.LC > +\fBedit\fR \fIfile\fR abbr: \fBe\fR > +.br > +\fBex\fR \fIfile\fR > +.ZP > +Used to begin an editing session on a new file. > +The editor > +first checks to see if the buffer has been modified since the last > +.I write > +command was issued. > +If it has been, > +a warning is issued and the > +command is aborted. > +The > +command otherwise deletes the entire contents of the editor buffer, > +makes the named file the current file and prints the new filename. > +After insuring that this file is sensible\(dg > +.FS > +\(dg I.e., that it is not a binary file such as a directory, > +a block or character special file other than > +.I /dev/tty, > +a terminal, > +or a binary or executable file > +(as indicated by the first word). > +.FE > +the editor reads the file into its buffer. > +.IP > +If the read of the file completes without error, > +the number of lines and characters read is typed. > +If there were any non-\s-2ASCII\s0 characters > +in the file they are stripped of their non-\s-2ASCII\s0 > +high bits, > +and any null characters in the file are discarded. > +If none of these errors occurred, the file is considered > +.I edited. > +If the last line of the input file is missing the trailing > +newline character, it will be supplied and a complaint will be issued. > +This command leaves the current line `\fB.\fR' at the last line read.\(dd= > +.FS > +\(dd If executed from within > +.I open > +or > +.I visual, > +the current line is initially the first line of the file. > +.FE > +.LC > +\fBe!\fR \fIfile\fR > +.ZP > +The variant form suppresses the complaint about modifications having > +been made and not written from the editor buffer, thus > +discarding all changes which have been made before editing the new file. > +.LC > +\fBe\fR \fB+\fIn\fR \fIfile\fR > +.ZP > +Causes the editor to begin at line > +.I n > +rather than at the last line; > +\fIn\fR may also be an editor command containing no spaces, e.g.: ``+/pat= ''. > +.LC > +\fBfile\fR abbr: \fBf\fR > +.ZP > +Prints the current file name, > +whether it has been `[Modified]' since the last > +.I write=20 > +command, > +whether it is > +.I "read only" , > +the current line, > +the number of lines in the buffer, > +and the percentage of the way through the buffer of the current line.* > +.FS > +* In the rare case that the current file is `[Not edited]' this is > +noted also; in this case you have to use the form \fBw!\fR to write to > +the file, since the editor is not sure that a \fBwrite\fR will not > +destroy a file unrelated to the current contents of the buffer. > +.FE > +.LC > +\fBfile\fR \fIfile\fR > +.ZP > +The current file name is changed to > +.I file > +which is considered=20 > +`[Not edited]'. > +.LC > +( 1 , $ ) \fBglobal\fR /\fIpat\|\fR/ \fIcmds\fR abbr: \fBg\fR > +.ZP > +First marks each line among those specified which matches > +the given regular expression. > +Then the given command list is executed with `\fB.\fR' initially > +set to each marked line. > +.IP > +The command list consists of the remaining commands on the current > +input line and may continue to multiple lines by ending all but the > +last such line with a `\e'. > +If > +.I cmds > +(and possibly the trailing \fB/\fR delimiter) is omitted, each line match= ing > +.I pat > +is printed. > +.I Append, > +.I insert, > +and > +.I change > +commands and associated input are permitted; > +the `\fB.\fR' terminating input may be omitted if it would be on the > +last line of the command list. > +.I Open > +and > +.I visual > +commands are permitted in the command list and take input from the termin= al. > +.IP > +The > +.I global > +command itself may not appear in > +.I cmds. > +The > +.I undo > +command is also not permitted there, > +as > +.I undo > +instead can be used to reverse the entire > +.I global > +command. > +The options > +.I autoprint > +and > +.I autoindent > +are inhibited during a > +.I global, > +(and possibly the trailing \fB/\fR delimiter) and the value of the > +.I report > +option is temporarily infinite, > +in deference to a \fIreport\fR for the entire global. > +Finally, the context mark `\'\'' is set to the value of > +`.' before the global command begins and is not changed during a global > +command, > +except perhaps by an > +.I open > +or > +.I visual > +within the > +.I global. > +.LC > +\fBg!\fR \fB/\fIpat\fB/\fR \fIcmds\fR abbr: \fBv\fR > +.IP > +The variant form of \fIglobal\fR runs \fIcmds\fR at each line not matchin= g > +\fIpat\fR. > +.LC > +( \fB.\fR )\|\fBinsert\fR abbr: \fBi\fR > +.br > +\fItext\fR > +.br > +\&\fB.\fR > +.ZP > +Places the given text before the specified line. > +The current line is left at the last line input; > +if there were none input it is left at the line before the addressed line= . > +This command differs from > +.I append > +only in the placement of text. > +.KS > +.LC > +\fBi!\fR > +.br > +\fItext\fR > +.br > +\&\fB.\fR > +.ZP > +The variant toggles > +.I autoindent > +during the > +.I insert. > +.KE > +.LC > +( \fB.\fR , \fB.\fR+1 ) \fBjoin\fR \fIcount\fR \fIflags\fR abbr: \fBj\= fR > +.ZP > +Places the text from a specified range of lines > +together on one line. > +White space is adjusted at each junction to provide at least > +one blank character, two if there was a `\fB.\fR' at the end of the line,= > +or none if the first following character is a `)'. > +If there is already white space at the end of the line, > +then the white space at the start of the next line will be discarded. > +.LC > +\fBj!\fR > +.ZP > +The variant causes a simpler > +.I join > +with no white space processing; the characters in the lines are simply > +concatenated. > +.LC > +( \fB.\fR ) \fBk\fR \fIx\fR > +.ZP > +The > +.I k > +command is a synonym for > +.I mark. > +It does not require a blank or tab before the following letter. > +.LC > +( \fB.\fR , \fB.\fR ) \fBlist\fR \fIcount\fR \fIflags\fR > +.ZP > +Prints the specified lines in a more unambiguous way: > +tabs are printed as `^I' > +and the end of each line is marked with a trailing `$'. > +The current line is left at the last line printed. > +.LC > +\fBmap\fR \fIlhs\fR \fIrhs\fR > +.ZP > +The > +.I map > +command is used to define macros for use in > +.I visual > +mode. > +.I Lhs > +should be a single character, or the sequence ``#n'', for n a digit, > +referring to function key \fIn\fR. When this character or function key > +is typed in > +.I visual > +mode, it will be as though the corresponding \fIrhs\fR had been typed. > +On terminals without function keys, you can type ``#n''. > +See section 6.9 of the ``Introduction to Display Editing with Vi'' > +for more details. > +.LC > +( \fB.\fR ) \fBmark\fR \fIx\fR > +.ZP > +Gives the specified line mark > +.I x, >=20 > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** >=20