Annotation of 43BSD/contrib/apl/man/xed.1, revision 1.1

1.1     ! root        1: .ds v 7.15
        !             2: .nr sa 35
        !             3: .ds ex edt
        !             4: .ds ed xed
        !             5: .ds Ed Xed
        !             6: .ds ED XED
        !             7: .ds ux eXtended
        !             8: '''.ds ed eed
        !             9: '''.ds Ed Eed
        !            10: '''.ds ED EED
        !            11: '''.ds ux EE/unix
        !            12: .if t .ds 0 \o'/0'
        !            13: .if t .ds oq "``
        !            14: .if t .ds cq "''
        !            15: .if n .ds oq ""
        !            16: .if n .ds cq ""
        !            17: .nh
        !            18: .TH \*(ED 1 "28 July 1983"
        !            19: .UC 4
        !            20: .SH NAME
        !            21: \*(ed
        !            22: \(mi \*(ux text EDitor \(mi V\*v
        !            23: .SH SYNOPSIS
        !            24: .B \*(ed
        !            25: [
        !            26: .B \(mi!@abBcdefhiklmnoOpqrstvwy
        !            27: ] [ name ]
        !            28: .SH DESCRIPTION
        !            29: .I \*(Ed
        !            30: is the \*(ux text EDitor.
        !            31: .PP
        !            32: If a
        !            33: .I name
        !            34: argument is given,
        !            35: .I \*(ed
        !            36: simulates an
        !            37: .B e
        !            38: command (see below) on the named file; that is to say,
        !            39: the file is read into
        !            40: .IR \*(ed 's
        !            41: buffer so that it can be edited.
        !            42: After every \n(sa
        !            43: (default)
        !            44: commands have been executed,
        !            45: the edit buffer will be written
        !            46: on a scratch file.
        !            47: When
        !            48: .I \*(ed
        !            49: terminates successfully,
        !            50: the
        !            51: .I save
        !            52: file will be removed unless the
        !            53: .B \(mid
        !            54: flag was selected.
        !            55: If a writeable file named \*(oq\c
        !            56: .I edsav\c
        !            57: \&\*(cq exists in the current directory,
        !            58: all commands typed will be written to it.
        !            59: .PP
        !            60: The optional flags after the
        !            61: .B \(mi
        !            62: have the following functions:
        !            63: .TP
        !            64: .B \(mi!
        !            65: Disallow use of the
        !            66: .B !
        !            67: command.
        !            68: Mostly useful for writing programs which cannot allow
        !            69: unrestricted access to shell commands.
        !            70: .TP
        !            71: .BI \(mi@ fn
        !            72: Preset the
        !            73: .I indirect
        !            74: file name to
        !            75: .IR fn .
        !            76: Subsequent use of the
        !            77: .B @
        !            78: command will read commands from
        !            79: .IR fn ,
        !            80: until the name is changed by giving an argument to the
        !            81: .B @
        !            82: command.
        !            83: .TP
        !            84: .B \(mia
        !            85: The line numbers will be printed in
        !            86: .I apl
        !            87: mode.
        !            88: The form is
        !            89: \*(oq[
        !            90: .I n
        !            91: ]\fI\et\fP\*(cq
        !            92: followed by the text.
        !            93: In addition,
        !            94: overstruck characters will be printed
        !            95: on two lines, one above the other.
        !            96: .I Apl
        !            97: line numbers begin at
        !            98: .I zero
        !            99: instead of one.
        !           100: .TP
        !           101: .B \(mib
        !           102: Make a
        !           103: .I backup
        !           104: copy of the edit file
        !           105: upon entry to the editor.
        !           106: The file's name will be that of the original
        !           107: file with a \*(oq\c
        !           108: .BI . bak\c
        !           109: \&\*(cq extension.
        !           110: .TP
        !           111: .BI \(miB nnnn
        !           112: Set the
        !           113: .I line
        !           114: buffer size to
        !           115: .I nnnn
        !           116: (decimal) bytes.
        !           117: The default line buffer size is 512 bytes,
        !           118: which limits the maximum length line which may be processed.
        !           119: Since there are occasions where it is desired to process
        !           120: longer lines,
        !           121: the buffer size may be increased.
        !           122: .TP
        !           123: .BI \(mic nn
        !           124: Set the editor's idea of the depth of the Crt screen
        !           125: for the
        !           126: .B :
        !           127: command to
        !           128: .I nn
        !           129: (decimal).
        !           130: Default is 21 lines.
        !           131: If
        !           132: .I nn
        !           133: is zero, the paging will be disabled.
        !           134: (See also the
        !           135: .I d=nn
        !           136: command.)
        !           137: .TP
        !           138: .B \(mid
        !           139: Disables the deletion of the file created via the
        !           140: .I auto-save
        !           141: feature.
        !           142: (The \*(oq\c
        !           143: .BI . \*(ex\c
        !           144: \&\*(cq file.)
        !           145: .TP
        !           146: .B \(mie
        !           147: Each input command will be echoed on standard output.
        !           148: This is useful for debugging editor command files,
        !           149: since the error message will be immediately
        !           150: preceded by the command that caused it.
        !           151: .TP
        !           152: .B \(mif
        !           153: .I \*(Ed
        !           154: will automatically prompt for text lines
        !           155: upon being invoked.
        !           156: Upon exit,
        !           157: .I \*(ed
        !           158: will automatically write the file.
        !           159: This is useful for creating files without having to type the
        !           160: .B a
        !           161: command upon entry.
        !           162: Note: If this flag is selected, the editor will over-write
        !           163: an existing file by the same name.
        !           164: See the
        !           165: .B qi
        !           166: command.
        !           167: .TP
        !           168: .B \(mih
        !           169: Enable processing of a \*(oq\c
        !           170: .I huge\c
        !           171: \&\*(cq file, I.E. one with
        !           172: up to 511 blocks, instead of the normal limit
        !           173: of 255 blocks.
        !           174: The use of
        !           175: .B \(mih
        !           176: disallows the
        !           177: .B g
        !           178: and
        !           179: .B v
        !           180: commands.
        !           181: (This flag is inoperative and unnecessary on the Vax.)
        !           182: .TP
        !           183: .B \(mii
        !           184: If an
        !           185: .I interrupt
        !           186: (ASCII
        !           187: .BR DEL )
        !           188: character is typed,
        !           189: .I \*(ed
        !           190: will write the current contents of the edit buffer on a file,
        !           191: and exit.
        !           192: The name of the dump file is that of the original file with a
        !           193: .BI . int
        !           194: extension.
        !           195: The
        !           196: .B \(mii
        !           197: flag is very useful for shell files
        !           198: which call the editor, since the editor will
        !           199: not hang around after an interrupt,
        !           200: interfering with the user's commands.
        !           201: .TP
        !           202: .B \(mik
        !           203: Useful for slow terminals,
        !           204: this flag
        !           205: .I kills
        !           206: verbose error messages.
        !           207: Instead,
        !           208: .I \*(ed
        !           209: prints a query
        !           210: .B ?
        !           211: followed by an
        !           212: .IR "error number" .
        !           213: The actual error message may be obtained by typing the
        !           214: .BI e nn
        !           215: command (see below).
        !           216: The long error messages may be turned on/off
        !           217: via the
        !           218: .B e+
        !           219: and
        !           220: .B e\(mi
        !           221: commands (see below).
        !           222: .TP
        !           223: .BI \(mil c
        !           224: The
        !           225: .I eol
        !           226: character is initialized to character
        !           227: .IR c .
        !           228: It may be changed during the edit session by the
        !           229: .BI e= c
        !           230: command.
        !           231: .TP
        !           232: .BI \(mim nn
        !           233: The modification count before an automatic
        !           234: save of the edit buffer is set to
        !           235: .I nn
        !           236: (decimal).
        !           237: Default is \n(sa.
        !           238: (That is, after every \n(sa commands which cause
        !           239: a modification to one or more lines, the
        !           240: edit buffer will be written on the edit
        !           241: file name with
        !           242: .BI . \*(ex
        !           243: extension.)
        !           244: If the count is zero, the auto-save feature is disabled.
        !           245: .TP
        !           246: .B \(min
        !           247: The
        !           248: .I no-line-numbers
        !           249: flag is toggled.
        !           250: This results in the omission of line number prompts
        !           251: as well as line numbers on the
        !           252: .B p
        !           253: and
        !           254: .B l
        !           255: commands.
        !           256: .TP
        !           257: .B \(mio
        !           258: The editor will not seek standard input to end-of-file
        !           259: upon detecting a command error.
        !           260: Normally, this results in a command file terminating immediately.
        !           261: .TP
        !           262: .B \(miO
        !           263: If a
        !           264: .I write
        !           265: is attempted to a file that is write-locked,
        !           266: but is owned by the user,
        !           267: an attempt will be made to
        !           268: .I override
        !           269: the permission.
        !           270: .TP
        !           271: .B \(mip
        !           272: Turn on prompts even if not talking to a terminal, mostly
        !           273: useful for editing through pipes
        !           274: (as when using
        !           275: .IR protocol (1)
        !           276: or
        !           277: .IR script (1)).
        !           278: .TP
        !           279: .B \(miq
        !           280: The editor will
        !           281: .B NOT
        !           282: ignore a
        !           283: .I quit
        !           284: (ASCII
        !           285: .B FS
        !           286: or ctrl-\c
        !           287: .B \e\c
        !           288: ) signal.
        !           289: Normally for editor debugging purposes, as a core dump
        !           290: can then be made.
        !           291: .br
        !           292: .BR Beware ,
        !           293: the edit buffer can not be recovered!
        !           294: .TP
        !           295: .B \(mir
        !           296: .I Removes
        !           297: the special meaning of the special characters:
        !           298: .B $
        !           299: .B &
        !           300: .B \e(
        !           301: .B \e)
        !           302: .B [
        !           303: .B .
        !           304: .B *
        !           305: .B ^
        !           306: .B \e
        !           307: .TP
        !           308: .B \(mis
        !           309: .I Silent
        !           310: mode.
        !           311: No prompts are issued,
        !           312: printing of lines resulting from commands is suppressed
        !           313: unless they are
        !           314: .I explicitly
        !           315: terminated with a
        !           316: .BR p .
        !           317: This mode is useful for running editor command files.
        !           318: .TP
        !           319: .BI \(mit c
        !           320: Set the
        !           321: .I tab
        !           322: character to
        !           323: .IR c .
        !           324: This is the character which will be expanded
        !           325: to the appropriate number of fill characters to get
        !           326: to the next column which has a tab stop set in it.
        !           327: The
        !           328: .I tab
        !           329: character may be set/changed using the
        !           330: .BI t= c
        !           331: command.
        !           332: .TP
        !           333: .BI \(miv c
        !           334: Set the tab
        !           335: .I fill
        !           336: character to
        !           337: .IR c .
        !           338: This character is used to pad out the space between expanded
        !           339: fields.
        !           340: The tab
        !           341: .I fill
        !           342: character may be set/changed by the
        !           343: .BI f= c
        !           344: command.
        !           345: .TP
        !           346: .BI \(miw nn
        !           347: Set the editor's idea of the page width to
        !           348: .I nn
        !           349: (decimal).
        !           350: Default is 80 columns.
        !           351: (See also the
        !           352: .BI w= nn
        !           353: command.)
        !           354: .TP
        !           355: .B \(miy
        !           356: Set the interrupt processing to list out
        !           357: one page
        !           358: (see the
        !           359: .B :
        !           360: command)
        !           361: upon receipt of an interrupt.
        !           362: .TP
        !           363: .B \(mi\*0123456789
        !           364: A decimal number preceded by a
        !           365: .B \(mi
        !           366: will set a
        !           367: .I tab
        !           368: stop in that column.
        !           369: Tab settings may be made during edit session by the
        !           370: .BI t, nn
        !           371: command.
        !           372: .TP
        !           373: .B \(mi,
        !           374: A comma in the flag list is ignored to facilitate
        !           375: setting multiple tab stops.
        !           376: For example, tabs may be set by any of the forms
        !           377: \*(oq\(mi9\ \(mi17\ \(mi25\*(cq, \*(oq\(mi9,17,25\*(cq, \*(oq\(mi9a17d25f\*(cq.
        !           378: .PP
        !           379: .I \*(Ed
        !           380: operates on a copy of any file it is editing; changes made
        !           381: in the copy have no effect on the file until a
        !           382: .I w
        !           383: (write)
        !           384: command is given.
        !           385: The copy of the text being edited resides
        !           386: in a temporary file called the buffer.
        !           387: There is only one buffer.
        !           388: .PP
        !           389: Commands to
        !           390: .I \*(ed
        !           391: have a simple and regular structure:
        !           392: zero or more addresses followed by a one or more character
        !           393: command, possibly followed by parameters to the command.
        !           394: These addresses specify one or more lines in the buffer.
        !           395: Every command which requires addresses has default addresses,
        !           396: so that the addresses can often be omitted.
        !           397: .PP
        !           398: In general, only one command may appear on a line.
        !           399: (See the
        !           400: .BI e= c
        !           401: command and the
        !           402: .B \(mil
        !           403: flag.)
        !           404: Certain commands allow the input of text.
        !           405: This text is placed in the appropriate place in the buffer.
        !           406: While
        !           407: .I \*(ed
        !           408: is accepting text, it is said to be in
        !           409: .IR "input mode" .
        !           410: In this mode, no commands are recognized;
        !           411: all input is merely collected.
        !           412: Input mode is left by typing a period
        !           413: .B .
        !           414: alone at the
        !           415: beginning of a line, or by receipt of an end-of-file
        !           416: (Ctrl-D)
        !           417: from the keyboard.
        !           418: .PP
        !           419: .I \*(Ed
        !           420: supports a limited form of
        !           421: .I "regular expression"
        !           422: notation.
        !           423: A regular expression specifies
        !           424: a set of strings of characters.
        !           425: A member of this set of strings is said to be
        !           426: .I matched
        !           427: by the regular expression.
        !           428: The regular expressions allowed by
        !           429: .I \*(ed
        !           430: are constructed as follows:
        !           431: In the following specification for regular expressions
        !           432: the word
        !           433: .I character
        !           434: means any character but newline.
        !           435: .IP 1.
        !           436: Any character except a
        !           437: .I special
        !           438: character
        !           439: matches itself.
        !           440: Special characters are
        !           441: the regular expression delimiter plus
        !           442: .B "\e [ ."
        !           443: and sometimes
        !           444: .BR "^ * $" .
        !           445: .IP 2.
        !           446: A
        !           447: .B .
        !           448: matches any character.
        !           449: .IP 3.
        !           450: A
        !           451: .B \e
        !           452: followed by any character except a
        !           453: .I digit
        !           454: or
        !           455: .B "( )"
        !           456: matches that character.
        !           457: .IP 4.
        !           458: A nonempty string
        !           459: .I s
        !           460: bracketed
        !           461: .B [\c
        !           462: .I s\c
        !           463: .B ]
        !           464: (or
        !           465: .B [^\c
        !           466: .I s\c
        !           467: .BR ] )
        !           468: matches any character in (or not in)
        !           469: .IR s .
        !           470: In 
        !           471: .IR s ,
        !           472: .B \e
        !           473: has no special meaning, and
        !           474: .B ]
        !           475: may only appear as
        !           476: the first letter.
        !           477: A substring 
        !           478: .I a\c
        !           479: \(mi\c
        !           480: .IR b ,
        !           481: with
        !           482: .I a
        !           483: and
        !           484: .I b
        !           485: in ascending ASCII order, stands for the inclusive
        !           486: range of ASCII characters.
        !           487: .IP 5.
        !           488: A regular expression of form 1-4 followed by
        !           489: .B *
        !           490: matches a sequence of
        !           491: .I zero
        !           492: or more matches of the regular expression.
        !           493: .IP 6.
        !           494: A regular expression,
        !           495: .IR x ,
        !           496: of form 1-8, bracketed
        !           497: .B \e(\c
        !           498: .I x\c
        !           499: .B \e)
        !           500: matches what
        !           501: .I x
        !           502: matches, with side-effects described under the
        !           503: .B s
        !           504: command below.
        !           505: .IP 7.
        !           506: A
        !           507: .B \e
        !           508: followed by a digit 
        !           509: .I n
        !           510: matches a copy of the string that the
        !           511: bracketed regular expression beginning with the
        !           512: .IR n th
        !           513: .B \e(
        !           514: matched.
        !           515: .IP 8.
        !           516: A regular expression of form 1-8,
        !           517: .IR x ,
        !           518: followed by a regular expression of form 1-7,
        !           519: .I y
        !           520: matches a match for
        !           521: .I x
        !           522: followed by a match for
        !           523: .IR y ,
        !           524: with the
        !           525: .I x
        !           526: match being as long as possible while still permitting a
        !           527: .I y
        !           528: match.
        !           529: .IP 9.
        !           530: A regular expression of form 1-8 preceded by
        !           531: .B ^
        !           532: (or followed by
        !           533: .BR $ ),
        !           534: is constrained to matches that
        !           535: begin at the left (or end at the right) end of a line.
        !           536: .IP 10.
        !           537: A regular expression of form 1-9 picks out the
        !           538: longest among the leftmost matches in a line.
        !           539: .IP 11.
        !           540: An empty regular expression stands for a copy of the
        !           541: last regular expression encountered.
        !           542: .PP
        !           543: Regular expressions are used in addresses to specify
        !           544: lines and in one command
        !           545: (see
        !           546: .B s
        !           547: below)
        !           548: to specify a portion of a line which is to be replaced.
        !           549: If it is desired to use one of
        !           550: the regular expression metacharacters as an ordinary
        !           551: character, that character may be preceded by
        !           552: .BR \e .
        !           553: This also applies to the character bounding the regular
        !           554: expression
        !           555: (often
        !           556: .BR / )
        !           557: and to
        !           558: .B \e
        !           559: itself.
        !           560: .PP
        !           561: To understand addressing in
        !           562: .I \*(ed
        !           563: it is necessary to know that at any time there is a
        !           564: .IR "current line" .
        !           565: Generally speaking, the current line is
        !           566: the last line affected by a command; however,
        !           567: the exact effect on the current line
        !           568: is discussed under the description of the command.
        !           569: Addresses are constructed as follows.
        !           570: .IP 1.
        !           571: The character
        !           572: .B .
        !           573: addresses the current line.
        !           574: .IP 2.
        !           575: The character
        !           576: .B $
        !           577: addresses the last line of the buffer.
        !           578: .IP 3.
        !           579: A decimal number
        !           580: .I n
        !           581: addresses the
        !           582: .IR n -th
        !           583: line of the buffer.
        !           584: .IP 4.
        !           585: .BI \(aa x
        !           586: addresses the line (or lines) marked with the
        !           587: mark name character
        !           588: .IR x ,
        !           589: which must be a lower-case letter.
        !           590: An alternative to this syntax is the capital
        !           591: letter alone.
        !           592: Lines are marked with the
        !           593: .B k
        !           594: command described below.
        !           595: .IP 5.
        !           596: .B \(aa\c
        !           597: .IB x ^
        !           598: (or
        !           599: .IB X ^\c
        !           600: ) addresses the first (lower)
        !           601: line of the range marked
        !           602: with the mark name character
        !           603: .IR x .
        !           604: (See the
        !           605: .I k
        !           606: command description.)
        !           607: .IP 6.
        !           608: .B \(aa\c
        !           609: .IB x $
        !           610: (or
        !           611: .IB X $\c
        !           612: ) addresses the last (upper)
        !           613: line of the range marked
        !           614: with the mark name character
        !           615: .IR x .
        !           616: (See the
        !           617: .B k
        !           618: command description.)
        !           619: .IP 7.
        !           620: A regular expression enclosed in slashes
        !           621: .B /
        !           622: addresses
        !           623: the first line found by searching toward the end of the
        !           624: buffer and stopping at the first line containing a
        !           625: string matching the regular expression.
        !           626: If necessary the search wraps around to the beginning of the buffer.
        !           627: .IP 8.
        !           628: A regular expression enclosed in queries
        !           629: .B ?
        !           630: addresses
        !           631: the first line found by searching toward the beginning of
        !           632: the buffer and stopping at the first line containing
        !           633: a string matching the regular expression.
        !           634: If necessary the search wraps around to the end of the buffer.
        !           635: .IP 9.
        !           636: An address followed by a plus sign
        !           637: .B +
        !           638: or a minus sign
        !           639: .B \(mi
        !           640: followed by a decimal number
        !           641: specifies that address plus
        !           642: (resp. minus)
        !           643: the indicated number of lines.
        !           644: The plus sign may be omitted.
        !           645: .IP 10.
        !           646: If an address begins with
        !           647: .B +
        !           648: or
        !           649: .B \(mi
        !           650: the addition or subtraction is taken with respect to the current line;
        !           651: e\.g\.
        !           652: .B \(mi5
        !           653: is understood to mean
        !           654: .BR .\(mi5 .
        !           655: (If the first address is omitted, but a second
        !           656: bound is specified, then the first address will be the current line
        !           657: plus one.
        !           658: e.g. \*(oq\c
        !           659: .B ,+10\c
        !           660: \&\*(cq is equivalent to \*(oq\c
        !           661: .B .+1,.+10\c
        !           662: \&\*(cq.)
        !           663: .IP 11.
        !           664: If an address ends with
        !           665: .B +
        !           666: or
        !           667: .BR \(mi ,
        !           668: then 1 is added (resp. subtracted).
        !           669: As a consequence of this rule and rule 10,
        !           670: the address
        !           671: .B \(mi
        !           672: refers to the line before the current line.
        !           673: Moreover, trailing
        !           674: .B +
        !           675: and
        !           676: .B \(mi
        !           677: characters have cumulative effect, so
        !           678: .B \(mi\(mi
        !           679: refers to the current
        !           680: line less 2.
        !           681: (There are complications of this rule,
        !           682: see the
        !           683: .B b
        !           684: command below.)
        !           685: .IP 12.
        !           686: To maintain compatibility with earlier versions of the editor,
        !           687: the character
        !           688: .B ^
        !           689: in addresses is entirely equivalent to
        !           690: .BR \(mi .
        !           691: .IP 13.
        !           692: The character
        !           693: .B =
        !           694: specifies that the address bounds of the
        !           695: previous command are to be used for the current command.
        !           696: .IP 14.
        !           697: The character pair
        !           698: .B =^
        !           699: addresses the lower bound
        !           700: (first address) specified in the previous command.
        !           701: .IP 15.
        !           702: The character pair
        !           703: .B =$
        !           704: addresses the upper bound
        !           705: (second address) specified in the previous command.
        !           706: .IP 16.
        !           707: The character pair
        !           708: .B ..
        !           709: addresses the
        !           710: last value of
        !           711: .B .
        !           712: different from the current value of
        !           713: .BR . \\|.
        !           714: .PP
        !           715: Commands may require zero, one, or two addresses.
        !           716: Commands which require no addresses regard the presence
        !           717: of an address as an error.
        !           718: Commands which accept one or two addresses
        !           719: assume default addresses when insufficient are given.
        !           720: If more addresses are given than such a command requires,
        !           721: the last one or two (depending on what is accepted) are used.
        !           722: .PP
        !           723: Addresses are separated from each other typically by a comma
        !           724: .BR , \\|.
        !           725: They may also be separated by a semicolon
        !           726: .BR ; \\|.
        !           727: In this case the current line
        !           728: .B .
        !           729: is set to
        !           730: the first address before the next address is interpreted.
        !           731: The second address of any two-address sequence
        !           732: must correspond to a line following
        !           733: the line corresponding to the first address.
        !           734: .PP
        !           735: In the following list of
        !           736: .I \*(ed
        !           737: commands, the default addresses are shown in parentheses.
        !           738: The parentheses are not part of the address,
        !           739: but are used to show that the given addresses are the default.
        !           740: .PP
        !           741: As mentioned, it is generally illegal for more than one
        !           742: command to appear on a line. However, most commands may be suffixed by
        !           743: .BR p ,
        !           744: .BR b ,
        !           745: .B q
        !           746: or
        !           747: .BR l ,
        !           748: in which case the current line is either
        !           749: printed (as in the
        !           750: .B p
        !           751: command), listed with balanced pairs of parentheses, square brackets,
        !           752: and brace brackets numbered (\c
        !           753: .BR b ),
        !           754: quoted (by
        !           755: .B
        !           756: "
        !           757: or
        !           758: .BR \(aa )
        !           759: string lengths (\c
        !           760: .BR q ),
        !           761: or listed as in the
        !           762: .B l
        !           763: command.
        !           764: .de PI
        !           765: .br
        !           766: .ne 5
        !           767: .IP
        !           768: .ti -.5i
        !           769: ..
        !           770: .PI
        !           771: (
        !           772: .B .
        !           773: )\c
        !           774: .B a
        !           775: .ti -.5i
        !           776: .I text
        !           777: .ti -.5i
        !           778: .B .
        !           779: .br
        !           780: The
        !           781: .I append
        !           782: command reads the given text
        !           783: and appends it after the addressed line.
        !           784: .B .
        !           785: is left on the last line input, if there
        !           786: were any, otherwise at the addressed line.
        !           787: Address \*(oq\c
        !           788: .B \*0\c
        !           789: \&\*(cq is legal for this command;
        !           790: text is placed at the beginning of the buffer.
        !           791: .PI
        !           792: (
        !           793: .B .
        !           794: )\c
        !           795: .B a
        !           796: .I text
        !           797: .br
        !           798: If a space immediately follows the
        !           799: .I append
        !           800: command,
        !           801: then the
        !           802: .I text
        !           803: immediately following the space is appended after
        !           804: the addressed line.
        !           805: .B .
        !           806: is left at the newly created line.
        !           807: This is essentially a quick method for entering one line.
        !           808: .PI
        !           809: (
        !           810: .B .
        !           811: ,
        !           812: .B .
        !           813: )\c
        !           814: .BI a/ text\c
        !           815: .B /
        !           816: .br
        !           817: Append the text after the last character in the addressed lines.
        !           818: .PI
        !           819: .BI b nn
        !           820: .br
        !           821: The
        !           822: .I browse
        !           823: count is set to
        !           824: .I nn
        !           825: (decimal).
        !           826: This count is then used for subsequent
        !           827: .I "new-line"
        !           828: commands as the number of lines to be printed out.
        !           829: If
        !           830: .I nn
        !           831: is missing, the count is reset to 1.
        !           832: .sp 1
        !           833: In constructing addresses as described in rule 11 above,
        !           834: the browse count is added to or subtracted from
        !           835: the current address,
        !           836: instead of a constant of 1 for each
        !           837: .B +
        !           838: or
        !           839: .BR \(mi .
        !           840: Normally this has no effect since the default is 1.
        !           841: .PI
        !           842: (
        !           843: .B .
        !           844: ,
        !           845: .B .
        !           846: )\c
        !           847: .B c
        !           848: .ti -.5i
        !           849: .I text
        !           850: .ti -.5i
        !           851: .B .
        !           852: .br
        !           853: The
        !           854: .I change
        !           855: command deletes the addressed lines, then accepts input
        !           856: text which replaces these lines.
        !           857: .B .
        !           858: is left at the last line input; if there were none,
        !           859: it is left at the first line not deleted.
        !           860: .PI
        !           861: (
        !           862: .B .
        !           863: ,
        !           864: .B .
        !           865: )\c
        !           866: .BI c/ "regular expression\c"
        !           867: .BI / replacement\c
        !           868: .B /
        !           869: .ti -.5i
        !           870: (
        !           871: .B .
        !           872: ,
        !           873: .B .
        !           874: )\c
        !           875: .BI c/ "regular expression\c"
        !           876: .BI / replacement\c
        !           877: .BI / nn
        !           878: .ti -.5i
        !           879: (
        !           880: .B .
        !           881: ,
        !           882: .B .
        !           883: )\c
        !           884: .BI c/ "regular expression\c"
        !           885: .BI / replacement\c
        !           886: .B /g
        !           887: .br
        !           888: This form of the change command is identical to the
        !           889: .B s
        !           890: command below.
        !           891: .PI
        !           892: (
        !           893: .B .
        !           894: ,
        !           895: .B .
        !           896: )\c
        !           897: .BI co a
        !           898: .br
        !           899: The
        !           900: .B co
        !           901: (copy) command is identical to the
        !           902: .B t
        !           903: (transfer)
        !           904: command below.
        !           905: .PI
        !           906: (
        !           907: .B .
        !           908: ,
        !           909: .B .
        !           910: )\c
        !           911: .B d
        !           912: .br
        !           913: The
        !           914: .I delete
        !           915: command deletes the addressed lines from the buffer.
        !           916: The line originally after the last line
        !           917: deleted becomes the current line;
        !           918: if the lines deleted were originally at the end,
        !           919: the new last line becomes the current line.
        !           920: .PI
        !           921: .B d
        !           922: .I pathname
        !           923: .br
        !           924: The current directory is set to
        !           925: .I pathname
        !           926: by a call to
        !           927: .IR chdir (2).
        !           928: .PI
        !           929: .BI d= nn
        !           930: .br
        !           931: Sets
        !           932: .IR \*(ed 's
        !           933: idea of what the
        !           934: .I depth
        !           935: of the screen is, to
        !           936: .I nn
        !           937: (decimal)
        !           938: lines.
        !           939: This is used in calculating how many lines will
        !           940: fit on the screen with the
        !           941: .B :
        !           942: command, and may be preset with the
        !           943: .B \(mic
        !           944: flag
        !           945: (see above).
        !           946: .PI
        !           947: .B e
        !           948: .I filename
        !           949: .ti -.5i
        !           950: .B ei
        !           951: .I filename
        !           952: .br
        !           953: The
        !           954: .I edit
        !           955: command causes the entire contents of the buffer to be deleted,
        !           956: and then the named file to be read in.
        !           957: If no
        !           958: .I filename
        !           959: is given, the
        !           960: .I current
        !           961: file is used.
        !           962: .B .
        !           963: is set to the last line of the buffer.
        !           964: The number of lines read is printed.
        !           965: .I filename
        !           966: (if present) is remembered for
        !           967: possible use as a default file name in a subsequent
        !           968: .BR e ,
        !           969: .BR r ,
        !           970: or
        !           971: .B w
        !           972: command.
        !           973: If the
        !           974: .B i
        !           975: is present,
        !           976: .I \*(ed
        !           977: will read
        !           978: .I filename
        !           979: immediately
        !           980: (without double-checking first).
        !           981: .PI
        !           982: .BI e= c
        !           983: .br
        !           984: The
        !           985: .I end-of-line
        !           986: character is set to
        !           987: .IR c .
        !           988: Thereafter,
        !           989: any occurrences of
        !           990: .I c
        !           991: are treated as if they were an actual newline character.
        !           992: This facilitates entering several commands on the same
        !           993: physical line.
        !           994: .BR Caution :
        !           995: the
        !           996: .I eol
        !           997: character is also interpreted in
        !           998: .I insert
        !           999: mode.
        !          1000: .PI
        !          1001: .BI e nn
        !          1002: .br
        !          1003: Displays the
        !          1004: .I long
        !          1005: error message for error number
        !          1006: .IR nn .
        !          1007: .PI
        !          1008: .B e+
        !          1009: .ti -.5i
        !          1010: .B e\(mi
        !          1011: .br
        !          1012: If a
        !          1013: .B \(mi
        !          1014: follows,
        !          1015: issue error messages in the form
        !          1016: .BI ? nn
        !          1017: where
        !          1018: .I nn
        !          1019: is the error number of the error that occurred.
        !          1020: This is mostly useful for slow terminals.
        !          1021: A
        !          1022: .B +
        !          1023: returns to long error messages.
        !          1024: (See the
        !          1025: .B \(mik
        !          1026: flag,
        !          1027: and the
        !          1028: .BI e nn
        !          1029: command above.)
        !          1030: .PI
        !          1031: (
        !          1032: .B .
        !          1033: ,
        !          1034: .B .
        !          1035: )\c
        !          1036: .B exp
        !          1037: .br
        !          1038: Providing that a
        !          1039: .I "tab character"
        !          1040: has been set
        !          1041: (see the
        !          1042: .BI t= c
        !          1043: command and the
        !          1044: .B \(mit
        !          1045: flag)
        !          1046: as well as
        !          1047: .I "tab stops"
        !          1048: being set
        !          1049: (see the
        !          1050: .BI t, nn
        !          1051: command),
        !          1052: any instances of the
        !          1053: .I "tab character"
        !          1054: within the addressed lines which are to the left
        !          1055: of a column which is marked as a
        !          1056: .IR "tab stop" ,
        !          1057: will be expanded with an appropriate
        !          1058: number of
        !          1059: .IR "fill characters" .
        !          1060: (See the
        !          1061: .BI f= c
        !          1062: command).
        !          1063: .PI
        !          1064: .B f
        !          1065: .I filename
        !          1066: .br
        !          1067: The
        !          1068: .I filename
        !          1069: command prints the currently remembered file name.
        !          1070: If
        !          1071: .I filename
        !          1072: is given,
        !          1073: the currently remembered file name is changed to
        !          1074: .IB filename .
        !          1075: .PI
        !          1076: .BI f= c
        !          1077: .br
        !          1078: Set the
        !          1079: .I fill
        !          1080: character to
        !          1081: .IR c .
        !          1082: This is the character used to fill out a line where
        !          1083: .I tab
        !          1084: characters have been expanded.
        !          1085: If
        !          1086: .I c
        !          1087: is missing,
        !          1088: the
        !          1089: .I fill
        !          1090: character is reset to the default,
        !          1091: which uses as many tabs as possible,
        !          1092: followed by as many blanks as necessary to reach
        !          1093: the desired column, resulting in the fewest possible
        !          1094: characters to get to the desired position.
        !          1095: .PI
        !          1096: (
        !          1097: .B 1
        !          1098: ,
        !          1099: .B $
        !          1100: )\c
        !          1101: .BI g/ "regular expression\c"
        !          1102: .BI / command-list
        !          1103: .ti -.5i
        !          1104: (
        !          1105: .B 1
        !          1106: ,
        !          1107: .B $
        !          1108: )\c
        !          1109: .BI g/ "regular expression\c"
        !          1110: .BI /v command-list
        !          1111: .br
        !          1112: In the
        !          1113: .I global
        !          1114: command, the first step is to mark every line which matches
        !          1115: the given
        !          1116: .IR "regular expression" .
        !          1117: If the optional
        !          1118: .B v
        !          1119: is present after the regular expression,
        !          1120: each line potentially matching the regular expression will
        !          1121: be printed, followed by the message \*(oq\c
        !          1122: .B "Ok?\\ \c"
        !          1123: \&\*(cq.
        !          1124: If the response begins with
        !          1125: .IR n ,
        !          1126: the line will not
        !          1127: be marked, any other response will cause the line to
        !          1128: be marked.
        !          1129: Then for every marked line, the
        !          1130: given command list is executed with
        !          1131: .B .
        !          1132: initially set to that line.
        !          1133: A single command or the first of multiple commands
        !          1134: appears on the same line with the global command.
        !          1135: All lines of a multi-line list except the last line 
        !          1136: must be ended with
        !          1137: .B \e\c
        !          1138: \&.
        !          1139: The
        !          1140: .BR a ,
        !          1141: .BR i ,
        !          1142: and
        !          1143: .B c
        !          1144: commands and associated input are permitted;
        !          1145: the
        !          1146: .B .
        !          1147: terminating input mode may be omitted if it would be on the
        !          1148: last line of the command list.
        !          1149: The (global) commands,
        !          1150: .BR g ,
        !          1151: and
        !          1152: .BR v ,
        !          1153: are not permitted in the command list.
        !          1154: If an
        !          1155: .I end-of-file
        !          1156: (Ctrl-D)
        !          1157: is typed in response to the prompt,
        !          1158: no further lines will be scanned or marked,
        !          1159: and all lines marked so far (if any) will have
        !          1160: .I command-list
        !          1161: applied to them.
        !          1162: .PI
        !          1163: .B h
        !          1164: .ti -.5i
        !          1165: .BI h nn
        !          1166: .br
        !          1167: Column numbers to column
        !          1168: .I nn
        !          1169: (default 71)
        !          1170: are printed out.
        !          1171: Any columns which have
        !          1172: .I tab
        !          1173: stops set will print out with
        !          1174: .B \(mi
        !          1175: character in the appropriate position.
        !          1176: .PI
        !          1177: .BR he [lp]
        !          1178: .br
        !          1179: List syntax of all
        !          1180: .I \*(ed
        !          1181: commands available.
        !          1182: (Merely displays the contents of the file
        !          1183: .B /etc/\*(ed.doc\c
        !          1184: \&.)
        !          1185: .PI
        !          1186: (
        !          1187: .B .
        !          1188: )\c
        !          1189: .B i
        !          1190: .ti -.5i
        !          1191: .I text
        !          1192: .ti -.5i
        !          1193: .B .
        !          1194: .br
        !          1195: This command inserts the given text before the addressed line.
        !          1196: .B .
        !          1197: is left at the last line input;
        !          1198: if there were none,
        !          1199: at the addressed line.
        !          1200: This command differs from the
        !          1201: .B a
        !          1202: command only in the placement of the text.
        !          1203: .PI
        !          1204: (
        !          1205: .B .
        !          1206: )\c
        !          1207: .B i
        !          1208: .I text
        !          1209: .br
        !          1210: This form of the
        !          1211: .I insert
        !          1212: command inserts one line before the addressed line,
        !          1213: consisting of the
        !          1214: .I text
        !          1215: following the space.
        !          1216: (See the
        !          1217: .B a
        !          1218: command.)
        !          1219: .PI
        !          1220: (
        !          1221: .B .
        !          1222: ,
        !          1223: .B .
        !          1224: )\c
        !          1225: .BI i/ text\c
        !          1226: .B /
        !          1227: .br
        !          1228: Insert the text before the first character in the addressed lines.
        !          1229: .PI
        !          1230: (
        !          1231: .B .\(mi1
        !          1232: ,
        !          1233: .B .
        !          1234: )\c
        !          1235: .B j
        !          1236: .ti -.5i
        !          1237: (
        !          1238: .B .\(mi1
        !          1239: ,
        !          1240: .B .
        !          1241: )\c
        !          1242: .BI j/ text\c
        !          1243: .B /
        !          1244: .br
        !          1245: Join the addressed lines together to form one resulting line.
        !          1246: This effectively removes the new-line from the
        !          1247: ends of all but the last line.
        !          1248: (Useful for rejoining lines that
        !          1249: were split incorrectly by the
        !          1250: .I s
        !          1251: command.)
        !          1252: .sp 1
        !          1253: If a delimiter
        !          1254: (and perhaps some
        !          1255: .IR text )
        !          1256: is present,
        !          1257: then the
        !          1258: .I text
        !          1259: will be inserted between the text of the joined lines.
        !          1260: .PI
        !          1261: .B k
        !          1262: .ti -.5i
        !          1263: (
        !          1264: .B .
        !          1265: ,
        !          1266: .B .
        !          1267: )\c
        !          1268: .BI k x
        !          1269: .br
        !          1270: The mark command marks the addressed line(s) with name
        !          1271: .IR x ,
        !          1272: which must be a letter.
        !          1273: Either of the address forms
        !          1274: .BI \(aa x
        !          1275: or
        !          1276: .I X
        !          1277: (capital letter)
        !          1278: then address this/these line(s).
        !          1279: If no character is specified after the command,
        !          1280: all currently marked lines are listed.
        !          1281: .PI
        !          1282: (
        !          1283: .B .
        !          1284: ,
        !          1285: .B .
        !          1286: )\c
        !          1287: .B l
        !          1288: .br
        !          1289: The
        !          1290: .I list
        !          1291: command prints the addressed lines in an unambiguous way:
        !          1292: non-graphic characters are printed as
        !          1293: .IR ^X ,
        !          1294: and long lines are folded.
        !          1295: .I Tab
        !          1296: characters show as
        !          1297: \o'->'
        !          1298: and
        !          1299: .I backspace
        !          1300: characters are displayed as
        !          1301: \o'-<'.
        !          1302: An
        !          1303: .B l
        !          1304: command may follow most others on the same line.
        !          1305: .PI
        !          1306: (
        !          1307: .B .+1
        !          1308: ,
        !          1309: .BI .+ nn
        !          1310: )\c
        !          1311: .B la
        !          1312: .br
        !          1313: One
        !          1314: .I page
        !          1315: of text is listed as in the
        !          1316: .B l
        !          1317: command above.
        !          1318: The text is guaranteed not to scroll off the screen.
        !          1319: .PI
        !          1320: (
        !          1321: .B 1
        !          1322: ,
        !          1323: .B $
        !          1324: )\c
        !          1325: .B ll
        !          1326: .br
        !          1327: The entire contents of the edit buffer are listed as if \*(oq\c
        !          1328: .B 1,$l\c
        !          1329: \&\*(cq had been typed.
        !          1330: .PI
        !          1331: .B m
        !          1332: .br
        !          1333: The characters
        !          1334: .B ^
        !          1335: .B $
        !          1336: .B .
        !          1337: .B *
        !          1338: .B [
        !          1339: .B &
        !          1340: .B \e(
        !          1341: .B \e)
        !          1342: and
        !          1343: .B \e
        !          1344: lose or regain their
        !          1345: special meaning in patterns as well as in the substitute command.
        !          1346: Each invocation of
        !          1347: .B m
        !          1348: toggles the \*(oq\c
        !          1349: .I magic\c
        !          1350: \&\*(cq characters on/off.
        !          1351: .PI
        !          1352: (
        !          1353: .B .
        !          1354: ,
        !          1355: .B .
        !          1356: )\c
        !          1357: .BI m a
        !          1358: .ti -.5i
        !          1359: (
        !          1360: .B .
        !          1361: ,
        !          1362: .B .
        !          1363: )\c
        !          1364: .BI mo a
        !          1365: .br
        !          1366: The
        !          1367: .I move
        !          1368: command repositions the addressed
        !          1369: lines after the line addressed by
        !          1370: .IR a .
        !          1371: The last of the moved lines becomes the current line.
        !          1372: .PI
        !          1373: .B n
        !          1374: .br
        !          1375: Line numbering is toggled on or off.
        !          1376: .PI
        !          1377: .B n+
        !          1378: .ti -.5i
        !          1379: .B n\(mi
        !          1380: .br
        !          1381: Line numbering for the
        !          1382: .B |
        !          1383: (and other variants)
        !          1384: command is turned on for a
        !          1385: .BR + ,
        !          1386: off for a
        !          1387: .BR \(mi .
        !          1388: .PI
        !          1389: (
        !          1390: .B .
        !          1391: ,
        !          1392: .B .
        !          1393: )\c
        !          1394: .B p
        !          1395: .br
        !          1396: The
        !          1397: .I print
        !          1398: command prints the addressed lines.
        !          1399: .B .
        !          1400: is left at the last line printed.
        !          1401: The
        !          1402: .B p
        !          1403: command may be placed on the same line after most commands.
        !          1404: .PI
        !          1405: (
        !          1406: .B .+1
        !          1407: ,
        !          1408: .BI .+ nn
        !          1409: )\c
        !          1410: .B pa
        !          1411: .br
        !          1412: One
        !          1413: .I page
        !          1414: of text is printed out.
        !          1415: The text is guaranteed not to scroll off the screen.
        !          1416: (See the
        !          1417: .B :
        !          1418: command below.)
        !          1419: .PI
        !          1420: (
        !          1421: .B 1
        !          1422: ,
        !          1423: .B $
        !          1424: )\c
        !          1425: .B pp
        !          1426: .br
        !          1427: The entire contents of the edit buffer are listed as if \*(oq\c
        !          1428: .B 1,$p\c
        !          1429: \&\*(cq had been typed.
        !          1430: .PI
        !          1431: .B q
        !          1432: .ti -.5i
        !          1433: .B qi
        !          1434: .br
        !          1435: The
        !          1436: .I quit
        !          1437: command causes
        !          1438: .I \*(ed
        !          1439: to exit.
        !          1440: No automatic write of a file is done.
        !          1441: If the edit file has been modified and the entire contents
        !          1442: of the buffer have not been written to a file,
        !          1443: a query will be issued to insure that the user
        !          1444: has not forgotten to write his file.
        !          1445: If the
        !          1446: .B i
        !          1447: is present, the editor will quit immediately
        !          1448: (without double-checking first).
        !          1449: Moreover,
        !          1450: if the
        !          1451: .B \(mif
        !          1452: flag was selected,
        !          1453: the file will
        !          1454: .I not
        !          1455: be (over)written.
        !          1456: .PI
        !          1457: (
        !          1458: .B $
        !          1459: )\c
        !          1460: .B r
        !          1461: .I filename
        !          1462: .br
        !          1463: The
        !          1464: .I read
        !          1465: command reads in the given file after the addressed line.
        !          1466: If no file name is given,
        !          1467: the remembered file name, if any, is used (see
        !          1468: .I e
        !          1469: and
        !          1470: .I f
        !          1471: commands).
        !          1472: The remembered file name is not changed unless
        !          1473: .I filename
        !          1474: is the very first file name mentioned.
        !          1475: Address \*(oq\c
        !          1476: .B \*0\c
        !          1477: \&\*(cq is legal for
        !          1478: .I r
        !          1479: and causes the file to be read at the beginning of the buffer.
        !          1480: If the read is successful, the number of lines read is typed.
        !          1481: .B .
        !          1482: is left at the last line read from the file.
        !          1483: .PI
        !          1484: .B s
        !          1485: .br
        !          1486: The
        !          1487: .I stop
        !          1488: command without any parameters performs an automatic write
        !          1489: (\c
        !          1490: .BR w )
        !          1491: if the file has been modified and then exits the editor.
        !          1492: .PI
        !          1493: (
        !          1494: .B .
        !          1495: ,
        !          1496: .B .
        !          1497: )\c
        !          1498: .BI s/ "regular expression\c"
        !          1499: .BI / replacement\c
        !          1500: .B /
        !          1501: .ti -.5i
        !          1502: (
        !          1503: .B .
        !          1504: ,
        !          1505: .B .
        !          1506: )\c
        !          1507: .BI s/ "regular expression\c"
        !          1508: .BI / replacement\c
        !          1509: .BI / nn
        !          1510: .ti -.5i
        !          1511: (
        !          1512: .B .
        !          1513: ,
        !          1514: .B .
        !          1515: )\c
        !          1516: .BI s/ "regular expression\c"
        !          1517: .BI / replacement\c
        !          1518: .B /g
        !          1519: .br
        !          1520: The
        !          1521: .I substitute
        !          1522: command searches each addressed
        !          1523: line for an occurrence of the specified regular expression.
        !          1524: On each line in which a match is found,
        !          1525: one of the folowing actions are taken for each of the three
        !          1526: forms of the command:
        !          1527: .IP 1. +.5i
        !          1528: The first occurrence of the specified expression
        !          1529: is replaced by the replacement text.
        !          1530: .IP 2. +0i
        !          1531: The
        !          1532: .IR nn -th
        !          1533: (where
        !          1534: .I nn
        !          1535: is a decimal number)
        !          1536: occurrence of the specified expression
        !          1537: is replaced by the replacement text.
        !          1538: .IP 3. +0i
        !          1539: All occurrences of the specified expression
        !          1540: are replaced.
        !          1541: .in -.5i
        !          1542: .sp 1
        !          1543: It is an error for the substitution to fail on all addressed lines.
        !          1544: Any character other than
        !          1545: .I newline
        !          1546: may be used instead of
        !          1547: .B /
        !          1548: to delimit the regular expression
        !          1549: and the replacement.
        !          1550: .B .
        !          1551: is left at the last line substituted.
        !          1552: .sp 1
        !          1553: An ampersand
        !          1554: .B &
        !          1555: appearing in the replacement
        !          1556: is replaced by the string matching the regular expression.
        !          1557: As a more general feature, the characters
        !          1558: .B \e\c
        !          1559: .I n\c
        !          1560: ,
        !          1561: where
        !          1562: .I n
        !          1563: is a digit,
        !          1564: are replaced by the text matched by the
        !          1565: .IR n -th
        !          1566: regular subexpression enclosed between
        !          1567: .B \e(
        !          1568: and
        !          1569: .B \e)\c
        !          1570: \&.
        !          1571: When nested, parenthesized subexpressions are present,
        !          1572: .I n
        !          1573: is determined by counting occurrences of
        !          1574: .B \e(
        !          1575: starting from the left.
        !          1576: .sp 1
        !          1577: Lines may be split by substituting
        !          1578: .I newline
        !          1579: characters into them.
        !          1580: The newline in the
        !          1581: .I replacement
        !          1582: must be escaped by preceding it with a
        !          1583: .B \e\c
        !          1584: \&.
        !          1585: .TP -.5i
        !          1586: .ti -.5i
        !          1587: .BI sa nn
        !          1588: .br
        !          1589: The
        !          1590: .I save-count
        !          1591: command changes the default
        !          1592: (\n(sa) count of text-changing
        !          1593: commands which may be executed before
        !          1594: an automatic buffer save will be done.
        !          1595: (\c
        !          1596: .I nn
        !          1597: is a decimal number.)
        !          1598: The save file name is the current filename with a
        !          1599: .BI . \*(ex
        !          1600: extension.
        !          1601: A count of zero (\*0) will disable the auto-save feature.
        !          1602: .PI
        !          1603: .B t
        !          1604: .br
        !          1605: All tab stops currently in effect, as set by the
        !          1606: .BI t, nn
        !          1607: command,
        !          1608: are listed.
        !          1609: .PI
        !          1610: (
        !          1611: .B .
        !          1612: ,
        !          1613: .B .
        !          1614: )\c
        !          1615: .BI t a
        !          1616: .br
        !          1617: A copy of the addressed lines is
        !          1618: .I transferred
        !          1619: after address
        !          1620: .I a
        !          1621: (which may be \*0).
        !          1622: .B .
        !          1623: is left at the last line of the copy.
        !          1624: .PI
        !          1625: .BI t= c
        !          1626: .br
        !          1627: Set
        !          1628: .I tab
        !          1629: character to
        !          1630: .IR c .
        !          1631: All occurrences of this character entered by the
        !          1632: .B a
        !          1633: or
        !          1634: .B i
        !          1635: commands will be expanded to the appropriate number of
        !          1636: .I fill
        !          1637: characters to get to the next column with a
        !          1638: .IR "tab stop" .
        !          1639: Any occurrences of the
        !          1640: .I tab
        !          1641: character after the last tab column will be untouched.
        !          1642: .PI
        !          1643: .BI t, nn\c
        !          1644: .RI , nn\c
        !          1645: ,...
        !          1646: .br
        !          1647: Set
        !          1648: .I "tab stops"
        !          1649: in specified (decimal) columns.
        !          1650: Numbers preceded by a
        !          1651: .B \(mi
        !          1652: will clear the tab
        !          1653: setting at that position.
        !          1654: The number zero clears
        !          1655: .I all
        !          1656: tab settings.
        !          1657: .PI
        !          1658: .B u
        !          1659: .br
        !          1660: The
        !          1661: .I undo
        !          1662: command will restore the last modified line
        !          1663: to its original condition.
        !          1664: This is different from the
        !          1665: .B x
        !          1666: (\c
        !          1667: .IR undelete )
        !          1668: command, which recovers blocks of
        !          1669: .I deleted
        !          1670: lines, whereas
        !          1671: .B u
        !          1672: will restore only
        !          1673: .I one
        !          1674: line, when modified by a
        !          1675: .I substitution
        !          1676: or
        !          1677: .I tab
        !          1678: expansion.
        !          1679: .I Undo
        !          1680: will
        !          1681: .I not
        !          1682: recover from a
        !          1683: .I join
        !          1684: command, nor
        !          1685: from any deletion, which is processed by the
        !          1686: .I undelete
        !          1687: command.
        !          1688: .PI
        !          1689: (
        !          1690: .B 1
        !          1691: ,
        !          1692: .B $
        !          1693: )\c
        !          1694: .BI v/ "regular expression\c"
        !          1695: .BI / command-list
        !          1696: .ti -.5i
        !          1697: (
        !          1698: .B 1
        !          1699: ,
        !          1700: .B $
        !          1701: )\c
        !          1702: .BI v/ "regular expression\c"
        !          1703: .BI /v command-list
        !          1704: .br
        !          1705: This command is the same as the
        !          1706: .I global
        !          1707: command except that the command list is executed
        !          1708: with
        !          1709: .B .
        !          1710: initially set to every line
        !          1711: .B except
        !          1712: those matching the regular expression.
        !          1713: .PI
        !          1714: (
        !          1715: .B 1
        !          1716: ,
        !          1717: .B $
        !          1718: )\c
        !          1719: .B w
        !          1720: .I filename
        !          1721: .ti -.5i
        !          1722: (
        !          1723: .B 1
        !          1724: ,
        !          1725: .B $
        !          1726: )\c
        !          1727: .BI w> filename
        !          1728: .ti -.5i
        !          1729: (
        !          1730: .B 1
        !          1731: ,
        !          1732: .B $
        !          1733: )\c
        !          1734: .B wi
        !          1735: .I filename
        !          1736: .br
        !          1737: The
        !          1738: .I write
        !          1739: command writes the addressed lines onto
        !          1740: the given file.
        !          1741: If the file does not exist,
        !          1742: it is created
        !          1743: (see
        !          1744: .IR umask (2)).
        !          1745: The remembered file name is not changed unless
        !          1746: .I filename
        !          1747: is the very first file name mentioned.
        !          1748: If no file name is given,
        !          1749: the remembered file name, if any, is used
        !          1750: (see
        !          1751: .B e
        !          1752: and
        !          1753: .B f
        !          1754: commands).
        !          1755: .B .
        !          1756: is unchanged.
        !          1757: If the
        !          1758: .B >
        !          1759: is present, the addressed lines
        !          1760: will be appended onto the end of the file.
        !          1761: If the
        !          1762: .B wi
        !          1763: form is used,
        !          1764: and the file is write-locked,
        !          1765: then
        !          1766: .I \*(ed
        !          1767: will attempt to over-ride the file permission, if possible.
        !          1768: .PI
        !          1769: .BI w= nn
        !          1770: .br
        !          1771: Sets
        !          1772: .IR \*(ed 's
        !          1773: idea of how wide the screen is to
        !          1774: .I nn
        !          1775: columns.
        !          1776: This is used in calculating how many lines will
        !          1777: fit on the screen with a
        !          1778: .B :
        !          1779: command, and may be preset with the
        !          1780: .B \(miw
        !          1781: flag
        !          1782: (see above).
        !          1783: .PI
        !          1784: (
        !          1785: .B .
        !          1786: )\c
        !          1787: .B x
        !          1788: .br
        !          1789: .I Undelete
        !          1790: is used to recover the most recently deleted
        !          1791: (or replaced)
        !          1792: block of lines.
        !          1793: .B .
        !          1794: is left at the last recovered line.
        !          1795: .IP
        !          1796: .nf
        !          1797: Example:
        !          1798:        25,34d          delete the lines
        !          1799:        *               see the damage
        !          1800:        24x             recovers the lost lines
        !          1801: .fi
        !          1802: .PI
        !          1803: (
        !          1804: .B .
        !          1805: )\c
        !          1806: .B y+
        !          1807: .ti -.5i
        !          1808: .B y
        !          1809: .ti -.5i
        !          1810: .B y\(mi
        !          1811: .br
        !          1812: This command changes the processing of an interrupt
        !          1813: received from the terminal.
        !          1814: If the
        !          1815: .B \(mi
        !          1816: is present, normal processing takes place.
        !          1817: That is, the message
        !          1818: \*(oqINTERRUPT!\*(cq
        !          1819: will be displayed on the terminal and
        !          1820: .I \*(ed
        !          1821: will prompt for another command.
        !          1822: If the
        !          1823: .B +
        !          1824: is present, the addressed line is set as
        !          1825: the initial address for the
        !          1826: .B :
        !          1827: command, which will automatically be
        !          1828: invoked upon each interrupt.
        !          1829: Lastly, if no character follows,
        !          1830: then upon each interrupt, one
        !          1831: .I page
        !          1832: will be displayed from
        !          1833: .B .
        !          1834: onward, which is useful for paging through
        !          1835: sections of text.
        !          1836: .PI
        !          1837: .B @
        !          1838: .I filename
        !          1839: .ti -.5i
        !          1840: .B @p
        !          1841: .I filename
        !          1842: .br
        !          1843: .I \*(Ed
        !          1844: opens the specified file,
        !          1845: and reads command lines from it.
        !          1846: The commands are echoed to the terminal
        !          1847: (if the
        !          1848: .B p
        !          1849: is present)
        !          1850: as each character is processed.
        !          1851: This allows monitoring the command file as
        !          1852: it is running, so that erroneous command line(s)
        !          1853: will appear before their respective
        !          1854: error messages.
        !          1855: If no filename is given,
        !          1856: the last
        !          1857: .IR indirect ed
        !          1858: filename,
        !          1859: if any,
        !          1860: will be used.
        !          1861: .PI
        !          1862: .BI ! UNIX-command
        !          1863: .br
        !          1864: The remainder of the line after the
        !          1865: .B !
        !          1866: is sent to the
        !          1867: .I shell
        !          1868: (see
        !          1869: .BR SH (1))
        !          1870: to be interpreted as a
        !          1871: .I UNIX
        !          1872: command.
        !          1873: .B .
        !          1874: is unchanged.
        !          1875: .PI
        !          1876: (
        !          1877: .B .
        !          1878: )\c
        !          1879: .BI | UNIX-command
        !          1880: .br
        !          1881: The addressed lines are
        !          1882: .I piped
        !          1883: as the standard input
        !          1884: to the command(s) following the
        !          1885: .B |
        !          1886: symbol.
        !          1887: The
        !          1888: .I UNIX
        !          1889: command is passed to the
        !          1890: .I shell
        !          1891: (as in
        !          1892: .B !
        !          1893: above)
        !          1894: to be processed.
        !          1895: Line numbers will not precede the lines of text sent to
        !          1896: the command(s) unless explicitly enabled via the
        !          1897: .B n+
        !          1898: command (see above).
        !          1899: .PI
        !          1900: .B |+
        !          1901: .ti -.5i
        !          1902: .B |\(mi
        !          1903: .br
        !          1904: Turn on (or off, respectively) strict checking of the exit status of
        !          1905: .I UNIX
        !          1906: commands executed via the
        !          1907: .B |\\||
        !          1908: command.
        !          1909: If checking is enabled, no processing will be done on the text
        !          1910: returned by a command which has a non-zero exit status
        !          1911: (thereby implying an error occurred).
        !          1912: This reduces the chance of erroneous command processing
        !          1913: causing loss of lines.
        !          1914: Lines deleted by the
        !          1915: .B |\\||
        !          1916: command may be recovered with
        !          1917: .B x
        !          1918: (undelete).
        !          1919: .PI
        !          1920: (
        !          1921: .B .
        !          1922: )\c
        !          1923: .BI |\\|| UNIX-command
        !          1924: .br
        !          1925: This variant of the
        !          1926: .I pipe
        !          1927: command
        !          1928: (commonly referred to as the \*(oq\c
        !          1929: .I double-pipe\c
        !          1930: \&\*(cq command)
        !          1931: performs similarly to the
        !          1932: .B |
        !          1933: command above, but replaces the lines sent to the command(s)
        !          1934: with those received from the command(s) on the standard output
        !          1935: of the command(s).
        !          1936: If the error status from the command(s) is not that of a
        !          1937: .IR "normal exit" ,
        !          1938: no change will be made in the text.
        !          1939: Similarly,
        !          1940: (by default)
        !          1941: if the exit status of the command(s) is non-zero
        !          1942: (possibly indicating an error)
        !          1943: no changes will be made.
        !          1944: This is due to the existence of many older programs which
        !          1945: do not terminate with a meaningful exit status.
        !          1946: The strict exit status checking may be disabled via the
        !          1947: .B |\(mi
        !          1948: command below.
        !          1949: An optional
        !          1950: .I "line number"
        !          1951: (\c
        !          1952: .B not
        !          1953: address)
        !          1954: may immediately follow the
        !          1955: .B |\\||
        !          1956: which will specify the line after which the returned
        !          1957: lines are to be placed.
        !          1958: .PI
        !          1959: .BI |< UNIX-command
        !          1960: .br
        !          1961: Lines generated by the
        !          1962: .I UNIX
        !          1963: command(s) are inserted after
        !          1964: .BR . .
        !          1965: An optional
        !          1966: .I "line number"
        !          1967: (\c
        !          1968: .B not
        !          1969: address)
        !          1970: may immediately follow the
        !          1971: .B <
        !          1972: which will specify the line after which the returned
        !          1973: lines are to be placed.
        !          1974: .PI
        !          1975: (
        !          1976: .B .
        !          1977: )\c
        !          1978: .BI |> UNIX-command
        !          1979: .br
        !          1980: The only difference between this command and the
        !          1981: .B |\\||
        !          1982: command above is this variant
        !          1983: .I inserts
        !          1984: the generated text
        !          1985: .I after
        !          1986: the lines sent, instead of
        !          1987: .I replacing
        !          1988: the original lines.
        !          1989: An optional
        !          1990: .I "line number"
        !          1991: (\c
        !          1992: .B not
        !          1993: address)
        !          1994: may immediately follow the
        !          1995: .B >
        !          1996: which will specify the line after which the returned
        !          1997: lines are to be placed.
        !          1998: .PI
        !          1999: (
        !          2000: .B .+1
        !          2001: ,
        !          2002: .BI .+ nn
        !          2003: )\c
        !          2004: .B :
        !          2005: .ti -.5i
        !          2006: (
        !          2007: .BI .- nn
        !          2008: ,
        !          2009: .B .
        !          2010: )\c
        !          2011: .B :-
        !          2012: .ti -.5i
        !          2013: (
        !          2014: .BI .- nn
        !          2015: ,
        !          2016: .BI .+ nn
        !          2017: )\c
        !          2018: .B *
        !          2019: .br
        !          2020: One
        !          2021: .I page
        !          2022: of text is printed out.
        !          2023: The text is guaranteed not to scroll off the screen.
        !          2024: The first form (just the
        !          2025: .B :
        !          2026: alone) will start at the addressed line,
        !          2027: the line following
        !          2028: .B .
        !          2029: is the default,
        !          2030: and print one screenful, or
        !          2031: .I page
        !          2032: of text.
        !          2033: .B .
        !          2034: is set to the last line displayed.
        !          2035: The second form,
        !          2036: .BR :- ,
        !          2037: displays one screenful, leaving
        !          2038: .B .
        !          2039: as the last line displayed, and remaining as the current line.
        !          2040: The last form,
        !          2041: .BR * ,
        !          2042: displays one screenful, with
        !          2043: .B .
        !          2044: centered in the
        !          2045: .IR page .
        !          2046: .PI
        !          2047: (
        !          2048: .B .+1
        !          2049: ,
        !          2050: .BI .+ nn
        !          2051: )\c
        !          2052: .I (newline)
        !          2053: .br
        !          2054: An address alone on a line causes the addressed line to be printed.
        !          2055: A blank line alone is equivalent to \*(oq\c
        !          2056: .BI .+1,.+ nn\c
        !          2057: .B p\c
        !          2058: \&\*(cq;
        !          2059: it is useful for stepping through text.
        !          2060: The
        !          2061: .I nn
        !          2062: is the count specified with the
        !          2063: .B b
        !          2064: command
        !          2065: (default 1).
        !          2066: .PP
        !          2067: If an interrupt signal (ASCII
        !          2068: .BR DEL )
        !          2069: is received,
        !          2070: .I \*(ed
        !          2071: prints
        !          2072: \*(oqINTERRUPT!\*(cq
        !          2073: and returns to its command level.
        !          2074: (See also the
        !          2075: .I y
        !          2076: command for alternate interrupt processing.)
        !          2077: .SH "Some size limitations"
        !          2078: .br
        !          2079: 512 characters per line,
        !          2080: (see the
        !          2081: .B \(miB
        !          2082: flag above)
        !          2083: .br
        !          2084: 256 characters per global command list,
        !          2085: .br
        !          2086: 64 characters per file name,
        !          2087: .br
        !          2088: 128K characters in the temporary file
        !          2089: (PDP-11 version only)
        !          2090: .br
        !          2091: (256K characters with
        !          2092: .B \(mih
        !          2093: flag)
        !          2094: .br
        !          2095: (No limit on the Vax version)
        !          2096: .br
        !          2097: The limit on the number of lines depends on the amount of core:
        !          2098: .ti +.5i
        !          2099: each line takes 1 word.
        !          2100: .br
        !          2101: (The current absolute maximum on the PDP-11's is 24,062 lines.)
        !          2102: .SH FILES
        !          2103: .TP
        !          2104: /tmp/e?????
        !          2105: temporary; ????? is process number (in decimal).
        !          2106: .TP
        !          2107: /tmp/ep?????
        !          2108: temporary for
        !          2109: .B |\\||
        !          2110: stuff.
        !          2111: .TP
        !          2112: *.hup
        !          2113: if
        !          2114: .I hangup
        !          2115: signal is received.
        !          2116: .TP
        !          2117: *.bak
        !          2118: if
        !          2119: .B \(mib
        !          2120: flag is specified.
        !          2121: .TP
        !          2122: *.int
        !          2123: if
        !          2124: .B \(mii
        !          2125: flag is specified and an
        !          2126: .I interrupt
        !          2127: is received.
        !          2128: .TP
        !          2129: *.\*(ex
        !          2130: auto-save (every \n(sa commands).
        !          2131: .TP
        !          2132: *.trm
        !          2133: if
        !          2134: .I termination
        !          2135: signal is received.
        !          2136: .TP
        !          2137: /etc/\*(ed.doc
        !          2138: for the
        !          2139: .BR he lp
        !          2140: command.
        !          2141: .SH DIAGNOSTICS
        !          2142: Each command has self-explanatory
        !          2143: error messages.
        !          2144: .SH "SEE ALSO"
        !          2145: ed(1), edit(1), eed(1), ex(1), umask(2), vi(1)
        !          2146: .br
        !          2147: A Tutorial Introduction to the
        !          2148: .B ED
        !          2149: Text Editor \(mi B. W. Kernighan
        !          2150: .SH BUGS
        !          2151: A
        !          2152: .B \e
        !          2153: followed by a
        !          2154: .IR newline ,
        !          2155: useful for splitting lines
        !          2156: with the substitute command, may not be passed through
        !          2157: the global command.
        !          2158: 
        !          2159: If line(s) are deleted which include the endpoints of
        !          2160: a range marked with the
        !          2161: .B k
        !          2162: command,
        !          2163: that mark-name character will
        !          2164: not work correctly.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.