Annotation of cci/usr/src/man/man1/ed.1, revision 1.1

1.1     ! root        1: .TH ED 1 "14 September 1979"
        !             2: .UC
        !             3: .if t .ds q \(aa
        !             4: .if n .ds q '
        !             5: .SH NAME
        !             6: ed \- text editor
        !             7: .SH SYNOPSIS
        !             8: .B ed
        !             9: [
        !            10: .B \-
        !            11: ] [
        !            12: .B \-x
        !            13: ] [ name ]
        !            14: .SH DESCRIPTION
        !            15: .I Ed
        !            16: is the standard text editor.
        !            17: .PP
        !            18: If a
        !            19: .I name
        !            20: argument is given,
        !            21: .I ed
        !            22: simulates an
        !            23: .I e
        !            24: command (see below)\| on the named file; that is to say,
        !            25: the file is read into
        !            26: .I ed's
        !            27: buffer so that it can be edited.
        !            28: If 
        !            29: .B \-x
        !            30: is present, an
        !            31: .I x
        !            32: command is simulated first to handle an encrypted file.
        !            33: The optional
        !            34: .B \-
        !            35: suppresses the printing
        !            36: of explanatory output
        !            37: and should be used
        !            38: when the standard input is
        !            39: an editor script.
        !            40: .PP
        !            41: .I Ed
        !            42: operates on a copy of any file it is editing; changes made
        !            43: in the copy have no effect on the file until a
        !            44: .IR w ""
        !            45: (write)\|
        !            46: command is given.
        !            47: The copy of the text being edited resides
        !            48: in a temporary file called the 
        !            49: .IR buffer .
        !            50: .PP
        !            51: Commands to
        !            52: .I ed
        !            53: have a simple and regular structure: zero or
        !            54: more
        !            55: .I addresses
        !            56: followed by a single character
        !            57: .I command,
        !            58: possibly
        !            59: followed by parameters to the command.
        !            60: These addresses specify one or more lines in the buffer.
        !            61: Missing addresses are supplied by default.
        !            62: .PP
        !            63: In general, only one command may appear on a line.
        !            64: Certain commands allow the 
        !            65: addition of text to the buffer.
        !            66: While
        !            67: .I ed
        !            68: is accepting text, it is said
        !            69: to be in
        !            70: .I  "input mode."
        !            71: In this mode, no commands are recognized;
        !            72: all input is merely collected.
        !            73: Input mode is left by typing a period `\fB.\fR' alone at the
        !            74: beginning of a line.
        !            75: .PP
        !            76: .I Ed
        !            77: supports a limited form of
        !            78: .I "regular expression"
        !            79: notation.
        !            80: A regular expression specifies
        !            81: a set of strings of characters.
        !            82: A member of this set of strings is said to be
        !            83: .I matched
        !            84: by the regular expression.
        !            85: In the following specification for regular expressions
        !            86: the word `character' means any character but newline.
        !            87: .IP 1.
        !            88: Any character except a special character
        !            89: matches itself.
        !            90: Special characters are
        !            91: the regular expression delimiter plus
        !            92: .RB \e\|[\| .
        !            93: and sometimes ^\|*\|$.
        !            94: .IP 2.
        !            95: A
        !            96: .B .
        !            97: matches any character.
        !            98: .IP 3.
        !            99: A \e followed by any character except a digit or (\|) matches that character.
        !           100: .IP 4.
        !           101: A nonempty string
        !           102: .I s
        !           103: bracketed
        !           104: .RI [ \|s\| ]
        !           105: (or
        !           106: .RI [^ s\| ])
        !           107: matches any character in (or not in)
        !           108: .I s.
        !           109: In 
        !           110: .I s,
        !           111: \e has no special meaning, and ] may only appear as
        !           112: the first letter.
        !           113: A substring 
        !           114: .I a\-b,
        !           115: with
        !           116: .I a
        !           117: and
        !           118: .I b
        !           119: in ascending ASCII order, stands for the inclusive
        !           120: range of ASCII characters.
        !           121: .IP 5.
        !           122: A regular expression of form 1-4 followed by * matches a sequence of
        !           123: 0 or more matches of the regular expression.
        !           124: .IP 6.
        !           125: A regular expression,
        !           126: .I x,
        !           127: of form 1-8, bracketed
        !           128: .RI \e( \|x\| \e)
        !           129: matches what
        !           130: .I x
        !           131: matches.
        !           132: .IP 7.
        !           133: A \e followed by a digit 
        !           134: .I n
        !           135: matches a copy of the string that the
        !           136: bracketed regular expression beginning with the
        !           137: .IR n th
        !           138: \e( matched.
        !           139: .IP 8.
        !           140: A regular expression of form 1-8,
        !           141: .I x,
        !           142: followed by a regular expression of form 1-7,
        !           143: .I y
        !           144: matches a match for
        !           145: .I x
        !           146: followed by a match for
        !           147: .I y,
        !           148: with the
        !           149: .I x
        !           150: match being as long as possible while still permitting a
        !           151: .I y
        !           152: match.
        !           153: .IP 9.
        !           154: A regular expression of form 1-8 preceded by ^
        !           155: (or followed by $), is constrained to matches that
        !           156: begin at the left (or end at the right) end of a line.
        !           157: .IP 10.
        !           158: A regular expression of form 1-9 picks out the
        !           159: longest among the leftmost matches in a line.
        !           160: .IP 11.
        !           161: An empty regular expression stands for a copy of the
        !           162: last regular expression encountered.
        !           163: .PP
        !           164: Regular expressions are used in addresses to specify
        !           165: lines and in one command
        !           166: (see
        !           167: .I s
        !           168: below)\|
        !           169: to specify a portion of a line which is to be replaced.
        !           170: If it is desired to use one of
        !           171: the regular expression metacharacters as an ordinary
        !           172: character, that character may be preceded by `\e'.
        !           173: This also applies to the character bounding the regular
        !           174: expression (often `/')\| and to `\e' itself.
        !           175: .PP
        !           176: To understand addressing in
        !           177: .I ed
        !           178: it is necessary to know that at any time there is a
        !           179: .I  "current line."
        !           180: Generally speaking, the current line is
        !           181: the last line affected by a command; however,
        !           182: the exact effect on the current line
        !           183: is discussed under the description of
        !           184: the command.
        !           185: Addresses are constructed as follows.
        !           186: .TP
        !           187: 1.
        !           188: The character `\fB.\fR' addresses the current line.
        !           189: .TP
        !           190: 2.
        !           191: The character `$' addresses the last line of the buffer.
        !           192: .TP
        !           193: 3.
        !           194: A decimal number
        !           195: .I n
        !           196: addresses the
        !           197: .IR n -th
        !           198: line of the buffer.
        !           199: .TP
        !           200: 4.
        !           201: `\(fm\fIx\fR' addresses the line marked with the name
        !           202: .IR x ,
        !           203: which must be a lower-case letter.
        !           204: Lines are marked with the
        !           205: .I k
        !           206: command described below.
        !           207: .TP
        !           208: 5.
        !           209: A regular expression enclosed in slashes `/' addresses
        !           210: the line found by searching forward from the current line
        !           211: and stopping at the first line containing a
        !           212: string that matches the regular expression.
        !           213: If necessary the search wraps around to the beginning of the
        !           214: buffer.
        !           215: .TP
        !           216: 6.
        !           217: A regular expression enclosed in queries `?' addresses
        !           218: the line found by searching backward from the current line
        !           219: and stopping at the first line containing
        !           220: a string that matches the regular expression.
        !           221: If necessary
        !           222: the search wraps around to the end of the buffer.
        !           223: .TP
        !           224: 7.
        !           225: An address followed by a plus sign `+'
        !           226: or a minus sign `\-' followed by a decimal number specifies that address plus
        !           227: (resp. minus)\| the indicated number of lines.
        !           228: The plus sign may be omitted.
        !           229: .TP
        !           230: 8.
        !           231: If an address begins with `+' or `\-'
        !           232: the addition or subtraction is taken with respect to the current line;
        !           233: e.g. `\-5' is understood to mean `\fB.\fR\-5'.
        !           234: .TP
        !           235: 9.
        !           236: If an address ends with `+' or `\-',
        !           237: then 1 is added (resp. subtracted).
        !           238: As a consequence of this rule and rule 8,
        !           239: the address `\-' refers to the line before the current line.
        !           240: Moreover,
        !           241: trailing
        !           242: `+' and `\-' characters
        !           243: have cumulative effect, so `\-\-' refers to the current
        !           244: line less 2.
        !           245: .TP
        !           246: 10.
        !           247: To maintain compatibility with earlier versions of the editor,
        !           248: the character `^' in addresses is 
        !           249: equivalent to `\-'.
        !           250: .PP
        !           251: Commands may require zero, one, or two addresses.
        !           252: Commands which require no addresses regard the presence
        !           253: of an address as an error.
        !           254: Commands which accept one or two addresses
        !           255: assume default addresses when insufficient are given.
        !           256: If more addresses are given than such a command requires,
        !           257: the last one or two (depending on what is accepted)\| are used.
        !           258: .PP
        !           259: Addresses are separated from each other typically by a comma
        !           260: `\fB,\fR'.
        !           261: They may also be separated by a semicolon
        !           262: `\fB;\fR'.
        !           263: In this case the current line `\fB.\fR' is set to
        !           264: the previous address before the next address is interpreted.
        !           265: This feature can be used to determine the starting
        !           266: line for forward and backward searches (`/', `?')\|.
        !           267: The second address of any two-address sequence
        !           268: must correspond to a line following the line corresponding to the first address.
        !           269: The special form `%'
        !           270: is an abbreviation for the address pair `1,$'.
        !           271: .PP
        !           272: In the following list of
        !           273: .I ed
        !           274: commands, the default addresses
        !           275: are shown in parentheses.
        !           276: The parentheses are not part of
        !           277: the address, but are used to show that the given addresses are
        !           278: the default.
        !           279: .PP
        !           280: As mentioned, it is generally illegal for more than one
        !           281: command to appear on a line.
        !           282: However, most commands may be suffixed by `p'
        !           283: or by `l', in which case
        !           284: the current line is either
        !           285: printed or listed respectively
        !           286: in the way discussed below.
        !           287: Commands may also be suffixed by `n',
        !           288: meaning the output of the command is to
        !           289: be line numbered.
        !           290: These suffixes may be combined in any order.
        !           291: .TP 5
        !           292: .RB (\| .\| )\|a
        !           293: .br
        !           294: .ns
        !           295: .TP 5
        !           296: <text>
        !           297: .br
        !           298: .ns
        !           299: .TP 5
        !           300: .B .
        !           301: .br
        !           302: The append command reads the given text
        !           303: and appends it after the addressed line.
        !           304: `\fB.\fR' is left
        !           305: on the last line input, if there
        !           306: were any, otherwise at the addressed line.
        !           307: Address `0' is legal for this command; text is placed
        !           308: at the beginning of the buffer.
        !           309: .TP 5
        !           310: .RB (\| .\| ,\  .\| )\|c
        !           311: .br
        !           312: .ns
        !           313: .TP 5
        !           314: <text>
        !           315: .br
        !           316: .ns
        !           317: .TP 5
        !           318: .B .
        !           319: .br
        !           320: The change
        !           321: command deletes the addressed lines, then accepts input
        !           322: text which replaces these lines.
        !           323: `\fB.\fR' is left at the last line input; if there were none,
        !           324: it is left at the line preceding the deleted lines.
        !           325: .TP 5
        !           326: .RB (\| .\| ,\  .\| )\|d
        !           327: The delete command deletes the addressed lines from the buffer.
        !           328: The line originally after the last line deleted becomes the current line;
        !           329: if the lines deleted were originally at the end,
        !           330: the new last line becomes the current line.
        !           331: .TP 5
        !           332: e filename
        !           333: The edit
        !           334: command causes the entire contents of the buffer to be deleted,
        !           335: and then the named file to be read in.
        !           336: `\fB.\fR' is set to the last line of the buffer.
        !           337: The number of characters read is typed.
        !           338: `filename' is remembered for possible use as a default file name
        !           339: in a subsequent
        !           340: .I r
        !           341: or
        !           342: .I w
        !           343: command.
        !           344: If `filename' is missing, the remembered name is used.
        !           345: .TP 5
        !           346: E filename
        !           347: This command is the same as
        !           348: .I e,
        !           349: except that no diagnostic results when no
        !           350: .I w
        !           351: has been given since the last buffer alteration.
        !           352: .TP 5
        !           353: f filename
        !           354: The filename command prints the currently remembered file name.
        !           355: If `filename' is given,
        !           356: the currently remembered file name is changed to `filename'.
        !           357: .TP 5
        !           358: (1,$)\|g/regular expression/command list
        !           359: In the global
        !           360: command, the first step is to mark every line which matches
        !           361: the given regular expression.
        !           362: Then for every such line, the
        !           363: given command list is executed with `\fB.\fR' initially set to that line.
        !           364: A single command or the first of multiple commands
        !           365: appears on the same line with the global command.
        !           366: All lines of a multi-line list except the last line must be ended with `\e'.
        !           367: .I A,
        !           368: .I i,
        !           369: and
        !           370: .I c
        !           371: commands and associated input are permitted;
        !           372: the `\fB.\fR' terminating input mode may be omitted if it would be on the
        !           373: last line of the command list.
        !           374: The commands
        !           375: .I g
        !           376: and
        !           377: .I v
        !           378: are not permitted in the command list.
        !           379: .TP 5
        !           380: .RB (\| .\| )\|i
        !           381: .ns
        !           382: .TP 5
        !           383: <text>
        !           384: .br
        !           385: .ns
        !           386: .TP 5
        !           387: .B .
        !           388: .br
        !           389: This command inserts the given text before the addressed line.
        !           390: `\fB.\fR' is left at the last line input, or, if there were none,
        !           391: at the line before the addressed line.
        !           392: This command differs from the
        !           393: .I a
        !           394: command only in the placement of the
        !           395: text.
        !           396: .TP 5
        !           397: .RB (\| .\| ,\  . +1)\|j
        !           398: This command joins the addressed lines into a single line;
        !           399: intermediate newlines simply disappear.
        !           400: `\fB.\fR' is left at the resulting line.
        !           401: .TP 5
        !           402: ( \fB. \fR)\|k\fIx\fR
        !           403: The mark command marks the addressed line with
        !           404: name
        !           405: .I x,
        !           406: which must be a lower-case letter.
        !           407: The address form `\(fm\fIx\fR' then addresses this line.
        !           408: .ne 2.5
        !           409: .TP 5
        !           410: .RB (\| .\| ,\  .\| )\|l
        !           411: The list command
        !           412: prints the addressed lines in an unambiguous way:
        !           413: non-graphic characters are
        !           414: printed in two-digit octal,
        !           415: and long lines are folded.
        !           416: The
        !           417: .I l
        !           418: command may be placed on the same line after any non-i/o
        !           419: command.
        !           420: .TP 5
        !           421: .RB (\| .\| ,\  .\| )\|m\fIa
        !           422: The move command repositions the addressed lines after the line
        !           423: addressed by
        !           424: .IR a .
        !           425: The last of the moved lines becomes the current line.
        !           426: .TP 5
        !           427: .RB (\| .\| ,\  .\| )\|p
        !           428: The print command prints the addressed lines.
        !           429: `\fB.\fR'
        !           430: is left at the last line printed.
        !           431: The
        !           432: .I p
        !           433: command
        !           434: may
        !           435: be placed on the same line after any non-i/o command.
        !           436: .TP
        !           437: .RB (\| .\| ,\  .\| )\|P
        !           438: This command is a synonym for
        !           439: .I p.
        !           440: .TP 5
        !           441: q
        !           442: The quit command causes
        !           443: .I ed
        !           444: to exit.
        !           445: No automatic write
        !           446: of a file is done.
        !           447: .TP 5
        !           448: Q
        !           449: This command is the same as
        !           450: .I q,
        !           451: except that no diagnostic results when no
        !           452: .I w
        !           453: has been given since the last buffer alteration.
        !           454: .TP 5
        !           455: ($)\|r filename
        !           456: The read command
        !           457: reads in the given file after the addressed line.
        !           458: If no file name is given,
        !           459: the remembered file name, if any, is used
        !           460: (see
        !           461: .I e
        !           462: and
        !           463: .I f
        !           464: commands)\|.
        !           465: The file name is remembered if there was no
        !           466: remembered file name already.
        !           467: Address `0' is legal for
        !           468: .I r
        !           469: and causes the
        !           470: file to be read at the beginning of the buffer.
        !           471: If the read is successful, the number of characters
        !           472: read is typed.
        !           473: `\fB.\fR' is left at the last line read in from the file.
        !           474: .TP 5
        !           475: (\| \fB.\fR\|, \fB.\fR\|)\|s/regular expression/replacement/       or,
        !           476: .br
        !           477: .ns
        !           478: .TP 5
        !           479: (\| \fB.\fR\|, \fB.\fR\|)\|s/regular expression/replacement/g
        !           480: The substitute command searches each addressed
        !           481: line for an occurrence of the specified regular expression.
        !           482: On each line in which a match is found,
        !           483: all matched strings are replaced by the replacement specified,
        !           484: if the global replacement indicator `g' appears after the command.
        !           485: If the global indicator does not appear, only the first occurrence
        !           486: of the matched string is replaced.
        !           487: It is an error for the substitution to fail on all addressed lines.
        !           488: Any punctuation character
        !           489: may be used instead of `/' to delimit the regular expression
        !           490: and the replacement.
        !           491: `\fB.\fR' is left at the last line substituted.
        !           492: .IP
        !           493: An ampersand `&' appearing in the replacement
        !           494: is replaced by the string matching the regular expression.
        !           495: The special meaning of `&' in this context may be
        !           496: suppressed by preceding it by `\e'.
        !           497: The characters
        !           498: .I `\|\en'
        !           499: where
        !           500: .I n
        !           501: is a digit,
        !           502: are replaced by the text matched by the
        !           503: .IR n -th
        !           504: regular subexpression
        !           505: enclosed between `\e(' and `\e)'.
        !           506: When
        !           507: nested, parenthesized subexpressions
        !           508: are present,
        !           509: .I n
        !           510: is determined by counting occurrences of `\e(' starting from the left.
        !           511: .IP
        !           512: Lines may be split by substituting new-line characters into them.
        !           513: The new-line in the
        !           514: replacement string
        !           515: must be escaped by preceding it by `\e'.
        !           516: .IP
        !           517: One or two trailing delimiters may be omitted,
        !           518: implying the `p' suffix.
        !           519: The special form `s' followed by
        !           520: .I no
        !           521: delimiters
        !           522: repeats the most recent substitute command
        !           523: on the addressed lines.
        !           524: The `s' may be followed by the letters
        !           525: .B r
        !           526: (use the most recent regular expression for the
        !           527: left hand side, instead of the most recent
        !           528: left hand side of a substitute command),
        !           529: .B p
        !           530: (complement the setting of the
        !           531: .I p
        !           532: suffix from the previous substitution), or
        !           533: .B g
        !           534: (complement the setting of the
        !           535: .I g
        !           536: suffix).
        !           537: These letters may be combined in any order.
        !           538: .TP 5
        !           539: .RB (\| .\| ,\  .\| )\|t\|\fIa
        !           540: This command acts just like the
        !           541: .I m
        !           542: command, except that a copy of the addressed lines is placed
        !           543: after address
        !           544: .I a
        !           545: (which may be 0).
        !           546: `\fB.\fR' is left on the last line of the copy.
        !           547: .TP 5
        !           548: .RB (\| .\| ,\  .\| )\|u
        !           549: The undo command restores the buffer to it's state
        !           550: before the most recent buffer modifying command.
        !           551: The current line is also restored.
        !           552: Buffer modifying commands are
        !           553: .I a, c, d, g, i, k, m, r, s, t,
        !           554: and
        !           555: .I v.
        !           556: For purposes of undo,
        !           557: .I g
        !           558: and
        !           559: .I v
        !           560: are considered to be a single buffer modifying command.
        !           561: Undo is its own inverse.
        !           562: .IP
        !           563: When
        !           564: .I ed
        !           565: runs out of memory
        !           566: (at about 8000 lines on any 16 bit mini-computer
        !           567: such as the PDP-11)
        !           568: This full undo is not possible, and
        !           569: .I u
        !           570: can only undo the effect of the most recent
        !           571: substitute on the current line.
        !           572: This restricted undo also applies to editor scripts
        !           573: when
        !           574: .I ed
        !           575: is invoked with the
        !           576: .B -
        !           577: option.
        !           578: .TP 5
        !           579: (1, $)\|v/regular expression/command list
        !           580: This command is the same as the global command
        !           581: .I g
        !           582: except that the command list is executed
        !           583: .I g
        !           584: with `\fB.\fR' initially set to every line
        !           585: .I except
        !           586: those
        !           587: matching the regular expression.
        !           588: .TP 5
        !           589: (1, $)\|w filename
        !           590: .br
        !           591: The write command writes the addressed lines onto
        !           592: the given file.
        !           593: If the file does not exist,
        !           594: it is created.
        !           595: The file name is remembered if there was no 
        !           596: remembered file name already.
        !           597: If no file name is given,
        !           598: the remembered file name, if any, is used
        !           599: (see
        !           600: .I e
        !           601: and
        !           602: .I f
        !           603: commands)\|.
        !           604: `\fB.\fR' is unchanged.
        !           605: If the command is successful, the number of characters written is
        !           606: printed.
        !           607: .TP
        !           608: (1, $)\|W filename
        !           609: This command is the same as
        !           610: .I w,
        !           611: except that the addressed lines are appended to the file.
        !           612: .TP 5
        !           613: (1, $)\|wq filename
        !           614: This command is the same as
        !           615: .I w
        !           616: except that afterwards a
        !           617: .I q
        !           618: command is done,
        !           619: exiting the editor
        !           620: after the file is written.
        !           621: .TP 5
        !           622: x
        !           623: A key string is demanded from the standard input.
        !           624: Later
        !           625: .I r, e
        !           626: and
        !           627: .I w
        !           628: commands will encrypt and decrypt the text 
        !           629: with this key by the algorithm of 
        !           630: .IR crypt (1).
        !           631: An explicitly empty key turns off encryption.
        !           632: .TP 5
        !           633: ($)\|=
        !           634: The line number of the addressed line is typed.
        !           635: `\fB.\fR' is unchanged by this command.
        !           636: .TP 5
        !           637: !<shell command>
        !           638: The remainder of the line after the `!' is sent
        !           639: to
        !           640: .IR sh (1)
        !           641: to be interpreted as a command.
        !           642: .RB ` . '
        !           643: is unchanged.
        !           644: .TP 5
        !           645: .RB (\| . +1,\| . +1)\|<newline>
        !           646: An address alone on a line causes the addressed line to be printed.
        !           647: A blank line alone is equivalent to `.+1p'; it is useful
        !           648: for stepping through text.
        !           649: If two addresses are present with no
        !           650: intervening semicolon,
        !           651: .I ed
        !           652: prints the range of lines.
        !           653: If they are separated by a semicolon,
        !           654: the second line is printed.
        !           655: .PP
        !           656: If an interrupt signal (ASCII DEL)\| is sent,
        !           657: .I ed
        !           658: prints `?interrupted'
        !           659: and returns to its command level.
        !           660: .PP
        !           661: Some size limitations:
        !           662: 512 characters per line,
        !           663: 256 characters per global command list,
        !           664: 64 characters per file name,
        !           665: and, on mini computers,
        !           666: 128K characters in the temporary file.
        !           667: The limit on the number of lines depends on the amount of core:
        !           668: each line takes 2 words.
        !           669: .PP
        !           670: When reading a file,
        !           671: .I ed
        !           672: discards ASCII NUL characters
        !           673: and all characters after the last newline.
        !           674: It refuses to read files containing non-ASCII characters.
        !           675: .SH FILES
        !           676: /tmp/e*
        !           677: .br
        !           678: edhup: work is saved here if terminal hangs up
        !           679: .SH "SEE ALSO"
        !           680: B. W. Kernighan,
        !           681: .I
        !           682: A Tutorial Introduction to the ED Text Editor
        !           683: .br
        !           684: B. W. Kernighan,
        !           685: .I Advanced editing on UNIX
        !           686: .br
        !           687: ex(1), sed(1), crypt(1)
        !           688: .SH DIAGNOSTICS
        !           689: `?name' for inaccessible file;
        !           690: `?self-explanatory message'
        !           691: for other errors.
        !           692: .PP
        !           693: To protect against throwing away valuable work,
        !           694: a
        !           695: .I q
        !           696: or
        !           697: .I e
        !           698: command is considered to be in error, unless a
        !           699: .I w
        !           700: has occurred since the last buffer change.
        !           701: A second
        !           702: .I q
        !           703: or
        !           704: .I e
        !           705: will be obeyed regardless.
        !           706: .SH BUGS
        !           707: The 
        !           708: .I l
        !           709: command mishandles DEL.
        !           710: .br
        !           711: The
        !           712: .I undo
        !           713: command causes marks to be lost on affected lines.
        !           714: .br
        !           715: The
        !           716: .I x
        !           717: command,
        !           718: .B -x
        !           719: option,
        !           720: and
        !           721: special treatment of hangups
        !           722: only work on UNIX.

unix.superglobalmegacorp.com

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