code: plan9front

ref: 5622b0bbd878dbc34045cc6fd37cffa64461eabe
dir: /sys/src/cmd/diff/test/diff-t11.expected/

View raw version
--- diff-t11.l
+++ diff-t11.r
@@ -1,1003 +1,908 @@
-.\"	$OpenBSD: t11.1,v 1.2 2007/11/27 16:22:12 martynas Exp $
-.\"	$NetBSD: ed.1,v 1.13 1995/03/21 09:04:38 cgd Exp $
+.\"	$OpenBSD: t11.2,v 1.1 2003/07/21 20:16:21 otto Exp $
 .\"
-.TH ED 1 "21 May 1993"
-.SH NAME
-.\" ed, red \- text editor
-ed \- text editor
-.SH SYNOPSIS
-ed [-] [-sx] [-p \fIstring\fR] [\fIfile\fR]
-.\" .LP
-.\" red [-] [-sx] [-p \fIstring\fR] [\fIfile\fR]
-.SH DESCRIPTION
-.B ed
+.Dd May 2, 1993
+.Dt ED 1
+.Os
+.Sh NAME
+.Nm ed
+.Nd text editor
+.Sh SYNOPSIS
+.Nm ed
+.Op Fl
+.Op Fl sx
+.Op Fl p Ar string
+.Op Ar file
+.Sh DESCRIPTION
+.Nm
 is a line-oriented text editor.
-It is used to create, display, modify and otherwise manipulate text
-files.
-.\" .B red
-.\" is a restricted
-.\" .BR ed :
-.\" it can only edit files in the current
-.\" directory and cannot execute shell commands.
-
+It is used to create, display, modify, and otherwise manipulate text files.
 If invoked with a
-.I file
+.Ar file
 argument, then a copy of
-.I file
+.Ar file
 is read into the editor's buffer.
 Changes are made to this copy and not directly to
-.I file
+.Ar file
 itself.
 Upon quitting
-.BR ed ,
-any changes not explicitly saved  with a
-.I `w'
+.Nm ed ,
+any changes not explicitly saved with a
+.Em w
 command are lost.
-
+.Pp
 Editing is done in two distinct modes:
-.I command
+.Em command
 and
-.IR input .
+.Em input .
 When first invoked,
-.B ed
+.Nm
 is in command mode.
-In this mode commands are read from the standard input and
+In this mode, commands are read from the standard input and
 executed to manipulate the contents of the editor buffer.
+.Pp
 A typical command might look like:
-.sp
-.RS
-,s/\fIold\fR/\fInew\fR/g
-.RE
-.sp
+.Bd -literal -offset indent
+,s/old/new/g
+.Ed
+.Pp
 which replaces all occurrences of the string
-.I old
+.Pa old
 with
-.IR new .
-
+.Pa new .
+.Pp
 When an input command, such as
-.I `a'
+.Em a
 (append),
-.I `i'
-(insert) or
-.I `c'
-(change), is given,
-.B ed
-enters input mode.  This is the primary means
-of adding text to a file.
+.Em i
+(insert),
+or
+.Em c
+(change) is given,
+.Nm
+enters input mode.
+This is the primary means of adding text to a file.
 In this mode, no commands are available;
-instead, the standard input is written
-directly to the editor buffer.  Lines consist of text up to and
-including a
-.IR newline
-character.
-Input mode is terminated by
-entering a single period  (\fI.\fR) on a line.
-
+instead, the standard input is written directory to the editor buffer.
+Lines consist of text up to and including a newline character.
+Input mode is terminated by entering a single period
+.Pq Ql \&.
+on a line.
+.Pp
 All
-.B ed
+.Nm
 commands operate on whole lines or ranges of lines; e.g.,
 the
-.I `d'
+.Em d
 command deletes lines; the
-.I `m'
+.Em m
 command moves lines, and so on.
 It is possible to modify only a portion of a line by means of replacement,
-as in the example above.  However even here, the
-.I `s'
+as in the example above.
+However, even here, the
+.Em s
 command is applied to whole lines at a time.
-
+.Pp
 In general,
-.B ed
+.Nm
 commands consist of zero or more line addresses, followed by a single
 character command and possibly additional parameters; i.e.,
 commands have the structure:
-.sp
-.RS
-.I [address [,address]]command[parameters]
-.RE
-.sp
+.Bd -literal -offset indent
+[address [,address]]command[parameters]
+.Ed
+.Pp
 The address(es) indicate the line or range of lines to be affected by the
-command.  If fewer addresses are given than the command accepts, then
+command.
+If fewer addresses are given than the command accepts, then
 default addresses are supplied.
-
-.SS OPTIONS
-.TP 8
--s
-Suppresses diagnostics. This should be used if
-.BR ed 's
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl
+Same as the
+.Fl s
+option (deprecated).
+.It Fl s
+Suppress diagnostics.
+This should be used if
+.Nm
 standard input is from a script.
-
-.TP 8
--x
-Prompts for an encryption key to be used in subsequent reads and writes
+.Fl s
+flag.
+.It Fl x
+Prompt for an encryption key to be used in subsequent reads and writes
 (see the
-.I `x'
+.Em x
 command).
-
-.TP 8
-.RI \-p \ string
-Specifies a command prompt.  This may be toggled on and off with the
-.I `P'
+.It Fl p Ar string
+Specifies a command prompt.
+This may be toggled on and off with the
+.Em P
 command.
-
-.TP 8
-.I file
-Specifies the name of a file to read.  If
-.I file
+.It Ar file
+Specifies the name of a file to read.
+If
+.Ar file
 is prefixed with a
-bang (!), then it is interpreted as a shell command.  In this case,
-what is read is
-the standard output of
-.I file
+bang
+.Pq Ql \&! ,
+then it is interpreted as a shell command.
+In this case, what is read is the standard output of
+.Ar file
 executed via
-.IR sh (1).
+.Xr sh 1 .
 To read a file whose name begins with a bang, prefix the
-name with a backslash (\\).
+name with a backslash
+.Pq Ql \e .
 The default filename is set to
-.I file
+.Ar file
 only if it is not prefixed with a bang.
-
-.SS LINE ADDRESSING
+.El
+.Ss LINE ADDRESSING
 An address represents the number of a line in the buffer.
-.B ed
+.Nm
 maintains a
-.I current address
-which is
-typically supplied to commands as the default address when none is specified.
-When a file is first read,  the current address is set to the last line
-of the file.  In general, the current address is set to the last line
-affected by a command.
-
+.Em current address
+which is typically supplied to commands as the default address
+when none is specified.
+When a file is first read, the current address is set to the last line
+of the file.
+In general, the current address is set to the last line affected by a command.
+.Pp
 A line address is
 constructed from one of the bases in the list below, optionally followed
-by a numeric offset.  The offset may include any combination
-of digits, operators (i.e.,
-.IR + ,
-.I -
+by a numeric offset.
+The offset may include any combination of digits, operators (i.e.,
+.Em + ,
+.Em - ,
 and
-.IR ^ )
+.Em ^ ) ,
 and whitespace.
 Addresses are read from left to right, and their values are computed
 relative to the current address.
-
+.Pp
 One exception to the rule that addresses represent line numbers is the
 address
-.I 0
+.Em 0
 (zero).
-This means "before the first line,"
+This means
+.Dq before the first line ,
 and is legal wherever it makes sense.
-
-An address range is two addresses separated either by a comma or
-semi-colon. The value of the first address in a range cannot exceed the
-value of the second.  If only one address is given in a range, then
-the second address is set to the given address.  If an
-.IR n- tuple
+.Pp
+An address range is two addresses separated either by a comma or semi-colon.
+The value of the first address in a range cannot exceed the
+value of the second.
+If only one address is given in a range,
+then the second address is set to the given address.
+If an
+.Em n Ns No -tuple
 of addresses is given where
-.I n > 2,
-then the corresponding range is determined by the last two addresses in
-the
-.IR n- tuple.
+.Em n > 2 ,
+then the corresponding range is determined by the last two addresses in the
+.Em n Ns No -tuple.
 If only one address is expected, then the last address is used.
-
+.Pp
 Each address in a comma-delimited range is interpreted relative to the
-current address.  In a semi-colon-delimited range, the first address is
+current address.
+In a semi-colon-delimited range, the first address is
 used to set the current address, and the second address is interpreted
 relative to the first.
-
-
-The following address symbols are recognized.
-
-.TP 8
-\&.
+.Pp
+The following address symbols are recognized:
+.Bl -tag -width Ds
+.It Em \&.
 The current line (address) in the buffer.
-
-.TP 8
-$
+.It Em $
 The last line in the buffer.
-
-.TP 8
-n
+.It Em n
 The
-.IR n th,
-line in the buffer
-where
-.I n
+.Em n Ns No th
+line in the buffer where
+.Em n
 is a number in the range
-.I [0,$].
-
-.TP 8
-- or ^
+.Em [0,$] .
+.It Em - No or Em ^
 The previous line.
 This is equivalent to
-.I -1
+.Em -1
 and may be repeated with cumulative effect.
-
-.TP 8
--\fIn\fR or ^\fIn\fR
+.It Em -n No or Em ^n
 The
-.IR n th
+.Em n Ns No th
 previous line, where
-.I n
+.Em n
 is a non-negative number.
-
-.TP 8
-+
-The
-next line.
+.It Em +
+The next line.
 This is equivalent to
-.I +1
+.Em +1
 and may be repeated with cumulative effect.
-
-.TP 8
-+\fIn\fR or whitespace\fIn\fR
+.It Em +n
 The
-.IR n th
+.Em n Ns No th
 next line, where
-.I n
+.Em n
 is a non-negative number.
-.I whitespace
-followed by a number
-.I n
-is interpreted as
-.IR +n .
-
-.TP 8
-, \fRor\fB %
-The first through last lines in the buffer.  This is equivalent to
-the address range
-.I 1,$.
-
-.TP 8
-;
-The
-current through last lines in the buffer.  This is equivalent to
-the address range
-.I .,$.
-
-.TP 8
-.RI / re/
-The
-next line containing the regular expression
-.IR re .
+.It Em \&, No or Em %
+The first through last lines in the buffer.
+This is equivalent to the address range
+.Em 1,$ .
+.It Em \&;
+The current through last lines in the buffer.
+This is equivalent to the address range
+.Em .,$ .
+.It Em / Ns No re Ns Em /
+The next line containing the regular expression
+.Em re .
 The search wraps to the beginning of the buffer and continues down to the
 current line, if necessary.
-// repeats the last search.
-
-.TP 8
-.RI ? re?
-The
-previous line containing the regular expression
-.IR re .
+.Em //
+repeats the last search.
+.It Em ? Ns No re Ns Em ?
+The previous line containing the regular expression
+.Em re .
 The search wraps to the end of the buffer and continues up to the
 current line, if necessary.
-?? repeats the last search.
-
-.TP 8
-.RI \' lc
-The
-line previously marked by a
-.I `k'
+.Em ??
+repeats the last search.
+.It Em \&\' Ns No lc
+The line previously marked by a
+.Em k
 (mark) command, where
-.I lc
+.Em lc
 is a lower case letter.
-
-.SS REGULAR EXPRESSIONS
+.El
+.Ss REGULAR EXPRESSIONS
 Regular expressions are patterns used in selecting text.
 For example, the
-.B ed
+.Nm
 command
-.sp
-.RS
-g/\fIstring\fR/
-.RE
-.sp
+.Bd -literal -offset indent
+g/string/
+.Ed
+.Pp
 prints all lines containing
-.IR string .
-Regular expressions are also
-used by the
-.I `s'
+.Em string .
+Regular expressions are also used by the
+.Em s
 command for selecting old text to be replaced with new.
-
+.Pp
 In addition to a specifying string literals, regular expressions can
-represent
-classes of strings.  Strings thus represented are said to be matched
-by the corresponding regular expression.
-If it is possible for a regular expression
-to match several strings in a line, then the left-most longest match is
-the one selected.
-
+represent classes of strings.
+Strings thus represented are said to be matched by the
+corresponding regular expression.
+If it is possible for a regular expression to match several strings in
+a line, then the leftmost longest match is the one selected.
+.Pp
 The following symbols are used in constructing regular expressions:
-
-.TP 8
-c
+.Bl -tag -width Dsasdfsd
+.It Em c
 Any character
-.I c
-not listed below, including `{', '}', `(', `)', `<' and `>',
+.Em c
+not listed below, including
+.Em { Ns No ,
+.Em } Ns No ,
+.Em \&( Ns No ,
+.Em \&) Ns No ,
+.Em < Ns No ,
+and
+.Em >
 matches itself.
-
-.TP 8
-\fR\e\fIc\fR
+.It Em \ec
 Any backslash-escaped character
-.IR c ,
-except for `{', '}', `(', `)', `<' and `>',
+.Em c Ns No ,
+except for
+.Em { Ns No ,
+.Em } Ns No ,
+.Em \&( Ns No ,
+.Em \&) Ns No ,
+.Em < Ns No , and
+.Em >
 matches itself.
-
-.TP 8
-\fR.\fR
+.It Em \&.
 Matches any single character.
-
-.TP 8
-.I [char-class]
+.It Em [char-class]
 Matches any single character in
-.IR char-class .
-To include a  `]'
+.Em char-class .
+To include a
+.Ql \&]
 in
-.IR char-class ,
+.Em char-class Ns No ,
 it must be the first character.
 A range of characters may be specified by separating the end characters
-of the range with a `-', e.g., `a-z' specifies the lower case characters.
+of the range with a
+.Ql - ;
+e.g.,
+.Em a-z
+specifies the lower case characters.
 The following literal expressions can also be used in
-.I char-class
+.Em char-class
 to specify sets of characters:
-.sp
-\ \ [:alnum:]\ \ [:cntrl:]\ \ [:lower:]\ \ [:space:]
-.PD 0
-\ \ [:alpha:]\ \ [:digit:]\ \ [:print:]\ \ [:upper:]
-.PD 0
-\ \ [:blank:]\ \ [:graph:]\ \ [:punct:]\ \ [:xdigit:]
-.sp
-If `-' appears as the first or last
-character of
-.IR char-class ,
+.Pp
+.Em \ \ [:alnum:]\ \ [:cntrl:]\ \ [:lower:]\ \ [:space:]
+.Em \ \ [:alpha:]\ \ [:digit:]\ \ [:print:]\ \ [:upper:]
+.Em \ \ [:blank:]\ \ [:graph:]\ \ [:punct:]\ \ [:xdigit:]
+.Pp
+If
+.Ql -
+appears as the first or last character of
+.Em char-class Ns No ,
 then it matches itself.
 All other characters in
-.I char-class
+.Em char-class
 match themselves.
-.sp
+.Pp
 Patterns in
-.I char-class
-of the form:
-.sp
-\ \ [.\fIcol-elm\fR.] or,
-.PD 0
-\ \ [=\fIcol-elm\fR=]
-.sp
+.Em char-class
+of the form
+.Em [.col-elm.] No or Em [=col-elm=]
 where
-.I col-elm
-is a
-.I collating element
-are interpreted according to
-.IR locale (5)
+.Em col-elm
+is a collating element are interpreted according to
+.Xr locale 5
 (not currently supported).
 See
-.IR regex (3)
+.Xr regex 3
 for an explanation of these constructs.
-
-.TP 8
-[^\fIchar-class\fR]
+.It Em [^char-class]
 Matches any single character, other than newline, not in
-.IR char-class .
-.IR char-class
-is defined
-as above.
-
-.TP 8
-^
-If `^' is the first character of a regular expression, then it
+.Em char-class Ns No .
+.Em char-class
+is defined as above.
+.It Em ^
+If
+.Em ^
+is the first character of a regular expression, then it
 anchors the regular expression to the beginning of a line.
 Otherwise, it matches itself.
-
-.TP 8
-$
-If `$' is the last character of a regular expression, it
-anchors the regular expression to the end of a line.
+.It Em $
+If
+.Em $
+is the last character of a regular expression,
+it anchors the regular expression to the end of a line.
 Otherwise, it matches itself.
-
-.TP 8
-\fR\e<\fR
+.It Em \e<
 Anchors the single character regular expression or subexpression
 immediately following it to the beginning of a word.
-(This may not be available)
-
-.TP 8
-\fR\e>\fR
+(This may not be available.)
+.It Em \e>
 Anchors the single character regular expression or subexpression
 immediately following it to the end of a word.
-(This may not be available)
-
-.TP 8
-\fR\e(\fIre\fR\e)\fR
+(This may not be available.)
+.It Em \e( Ns No re Ns Em \e)
 Defines a subexpression
-.IR re .
+.Em re .
 Subexpressions may be nested.
-A subsequent backreference of the form \fI`\en'\fR, where
-.I n
+A subsequent backreference of the form
+.Em \en Ns No ,
+where
+.Em n
 is a number in the range [1,9], expands to the text matched by the
-.IR n th
+.Em n Ns No th
 subexpression.
-For example, the regular expression `\e(.*\e)\e1' matches any string
-consisting of identical adjacent substrings.
-Subexpressions are ordered relative to
-their left delimiter.
-
-.TP 8
-*
+For example, the regular expression
+.Em \e(.*\e)\e1
+matches any string consisting of identical adjacent substrings.
+Subexpressions are ordered relative to their left delimiter.
+.It Em *
 Matches the single character regular expression or subexpression
-immediately preceding it zero or more times.  If '*' is the first
-character of a regular expression or subexpression, then it matches
-itself.  The `*' operator sometimes yields unexpected results.
-For example, the regular expression `b*' matches the beginning of
-the string `abbb' (as opposed to the substring `bbb'), since a null match
-is the only left-most match.
-
-.TP 8
-\fR\e{\fIn,m\fR\e}\fR or \fR\e{\fIn,\fR\e}\fR or \fR\e{\fIn\fR\e}\fR
+immediately preceding it zero or more times.
+If
+.Em *
+is the first character of a regular expression or subexpression,
+then it matches itself.
+The
+.Em *
+operator sometimes yields unexpected results.
+For example, the regular expression
+.Em b*
+matches the beginning of the string
+.Em abbb
+(as opposed to the substring
+.Em bbb Ns No ),
+since a null match is the only leftmost match.
+.Sm off
+.It Xo Em \e{ No n,m
+.Em \e}\ \e{ No n, Em \e}\
+.Em \e{ No n Em \e}
+.Xc
+.Sm on
 Matches the single character regular expression or subexpression
 immediately preceding it at least
-.I n
+.Em n
 and at most
-.I m
+.Em m
 times.
 If
-.I m
+.Em m
 is omitted, then it matches at least
-.I n
+.Em n
 times.
 If the comma is also omitted, then it matches exactly
-.I n
+.Em n
 times.
-
-.LP
+.El
+.Pp
 Additional regular expression operators may be defined depending on the
 particular
-.IR regex (3)
+.Xr regex 3
 implementation.
-
-.SS COMMANDS
+.Ss COMMANDS
 All
-.B ed
-commands are single characters, though some require additonal parameters.
+.Nm
+commands are single characters, though some require additional parameters.
 If a command's parameters extend over several lines, then
-each line except for the last
-must be terminated with a backslash (\\).
-
+each line except for the last must be terminated with a backslash
+.Pq Ql \e .
+.Pp
 In general, at most one command is allowed per line.
 However, most commands accept a print suffix, which is any of
-.I `p'
-(print),
-.I `l'
-(list) ,
+.Em p No (print),
+.Em l No (list),
 or
-.I `n'
-(enumerate),
+.Em n No (enumerate),
 to print the last line affected by the command.
-
+.Pp
 An interrupt (typically ^C) has the effect of aborting the current command
 and returning the editor to command mode.
-
-.B ed
-recognizes the following commands.  The commands are shown together with
+.Pp
+.Nm
+recognizes the following commands.
+The commands are shown together with
 the default address or address range supplied if none is
-specified (in parenthesis).
-
-.TP 8
-(.)a
+specified (in parentheses), and other possible arguments on the right.
+.Bl -tag -width Dxxs
+.It (.) Ns Em a
 Appends text to the buffer after the addressed line.
 Text is entered in input mode.
 The current address is set to last line entered.
-
-.TP 8
-(.,.)c
-Changes lines in the buffer.  The addressed lines are deleted
-from the buffer, and text is appended in their place.
+.It (.,.) Ns Em c
+Changes lines in the buffer.
+The addressed lines are deleted from the buffer,
+and text is appended in their place.
 Text is entered in input mode.
 The current address is set to last line entered.
-
-.TP 8
-(.,.)d
+.It (.,.) Ns Em d
 Deletes the addressed lines from the buffer.
 If there is a line after the deleted range, then the current address is set
-to this line. Otherwise the current address is set to the line
-before the deleted range.
-
-.TP 8
-.RI e \ file
+to this line.
+Otherwise the current address is set to the line before the deleted range.
+.It Em e No file
 Edits
-.IR file ,
+.Em file Ns No ,
 and sets the default filename.
 If
-.I file
-is not specified, then the  default filename is used.
-Any lines in the buffer are deleted before
-the new file is read.
+.Em file
+is not specified, then the default filename is used.
+Any lines in the buffer are deleted before the new file is read.
 The current address is set to the last line read.
-
-.TP 8
-.RI e \ !command
+.It Em e No !command
 Edits the standard output of
-.IR `!command' ,
+.Em !command Ns No ,
 (see
-.RI ! command
+.Em ! No command
 below).
 The default filename is unchanged.
 Any lines in the buffer are deleted before the output of
-.I command
+.Em command
 is read.
 The current address is set to the last line read.
-
-.TP 8
-.RI E \ file
+.It Em E No file
 Edits
-.I file
+.Em file
 unconditionally.
 This is similar to the
-.I e
-command,
-except that unwritten changes are discarded without warning.
+.Em e
+command, except that unwritten changes are discarded without warning.
 The current address is set to the last line read.
-
-.TP 8
-.RI f \ file
+.It Em f No file
 Sets the default filename to
-.IR file .
+.Em file Ns No .
 If
-.I file
+.Em file
 is not specified, then the default unescaped filename is printed.
-
-.TP 8
-.RI (1,$)g /re/command-list
+.It (1,$) Ns Em g Ns No /re/command-list
 Applies
-.I command-list
+.Em command-list
 to each of the addressed lines matching a regular expression
-.IR re .
-The current address is set to the
-line currently matched before
-.I command-list
+.Em re Ns No .
+The current address is set to the line currently matched before
+.Em command-list
 is executed.
 At the end of the
-.I `g'
+.Em g
 command, the current address is set to the last line affected by
-.IR command-list .
-
+.Em command-list Ns No .
+.Pp
 Each command in
-.I command-list
+.Em command-list
 must be on a separate line,
-and every line except for the last must be terminated by a backslash
-(\\).
+and every line except for the last must be terminated by
+.Em \e No (backslash).
 Any commands are allowed, except for
-.IR `g' ,
-.IR `G' ,
-.IR `v' ,
+.Em g Ns No ,
+.Em G Ns No ,
+.Em v Ns No ,
 and
-.IR `V' .
+.Em V Ns No .
 A newline alone in
-.I command-list
-is equivalent to a 
-.I `p'
+.Em command-list
+is equivalent to a
+.Em p
 command.
-
-.TP 8
-.RI (1,$)G /re/
+.It (1,$) Ns Em G Ns No /re/
 Interactively edits the addressed lines matching a regular expression
-.IR re.
-For each matching line,
-the line is printed,
-the current address is set,
-and the user is prompted to enter a 
-.IR command-list .
+.Em re Ns No .
+For each matching line, the line is printed, the current address is set,
+and the user is prompted to enter a
+.Em command-list Ns No .
 At the end of the
-.I `G'
-command, the current address
-is set to the last line affected by (the last)
-.IR command-list .
-
+.Em g
+command, the current address is set to the last line affected by (the last)
+.Em command-list Ns No .
+.Pp
 The format of
-.I command-list
+.Em command-list
 is the same as that of the
-.I `g'
-command.  A newline alone acts as a null command list.
-A single `&' repeats the last non-null command list.
-
-.TP 8
-H
+.Em g
+command.
+A newline alone acts as a null command list.
+A single
+.Em &
+repeats the last non-null command list.
+.It Em H
 Toggles the printing of error explanations.
 By default, explanations are not printed.
-It is recommended that ed scripts begin with this command to
-aid in debugging.
-
-.TP 8
-h
+It is recommended that
+.Nm
+scripts begin with this command to aid in debugging.
+.It Em h
 Prints an explanation of the last error.
-
-.TP 8
-(.)i
+.It (.) Ns Em i
 Inserts text in the buffer before the current line.
 Text is entered in input mode.
 The current address is set to the last line entered.
-
-.TP 8
-(.,.+1)j
-Joins the addressed lines.  The addressed lines are
-deleted from the buffer and replaced by a single
+.It (.,.+1) Ns Em j
+Joins the addressed lines.
+The addressed lines are deleted from the buffer and replaced by a single
 line containing their joined text.
 The current address is set to the resultant line.
-
-.TP 8
-.RI (.)k lc
+.It (.) Ns Em klc
 Marks a line with a lower case letter
-.IR lc .
-The  line can then be addressed as
-.I 'lc
+.Em lc Ns No \&.
+The line can then be addressed as
+.Em \&'lc
 (i.e., a single quote followed by
-.I lc
-) in subsequent commands.  The mark is not cleared until the line is
-deleted or otherwise modified.
-
-.TP 8
-(.,.)l
+.Em lc Ns No )
+in subsequent commands.
+The mark is not cleared until the line is deleted or otherwise modified.
+.It (.,.) Ns Em l
 Prints the addressed lines unambiguously.
-If a single line fills for than one screen (as might be the case
-when viewing a binary file, for instance), a `--More--' 
-prompt is printed on the last line. 
-.B ed
-waits until the RETURN key is pressed
-before displaying the next screen. 
-The current address is set to the last line
-printed.
-
-.TP 8
-(.,.)m(.)
-Moves lines in the buffer.  The addressed lines are moved to after the
+If a single line fills more than one screen (as might be the case
+when viewing a binary file, for instance), a
+.Dq --More--
+prompt is printed on the last line.
+.Nm
+waits until the RETURN key is pressed before displaying the next screen.
+The current address is set to the last line printed.
+.It (.,.) Ns Em m Ns No (.)
+Moves lines in the buffer.
+The addressed lines are moved to after the
 right-hand destination address, which may be the address
-.IR 0
+.Em 0
 (zero).
-The current address is set to the
-last line moved.
-
-.TP 8
-(.,.)n
-Prints the addressed lines along with
-their line numbers.  The current address is set to the last line
-printed.
-
-.TP 8
-(.,.)p
-Prints the addressed lines. The current address is set to the last line
-printed.
-
-.TP 8
-P
+The current address is set to the last line moved.
+.It (.,.) Ns Em n
+Prints the addressed lines along with their line numbers.
+The current address is set to the last line printed.
+.It (.,.) Ns Em p
+Prints the addressed lines.
+The current address is set to the last line printed.
+.It Em P
 Toggles the command prompt on and off.
 Unless a prompt was specified by with command-line option
-\fI-p string\fR, the command prompt is by default turned off.
-
-.TP 8
-q
-Quits ed.
-
-.TP 8
-Q
-Quits ed unconditionally.
+.Fl p Ar string Ns No ,
+the command prompt is by default turned off.
+.It Em q
+Quits
+.Nm ed .
+.It Em Q
+Quits
+.Nm
+unconditionally.
 This is similar to the
-.I q
-command,
-except that unwritten changes are discarded without warning.
-
-.TP 8
-.RI ($)r \ file
+.Em q
+command, except that unwritten changes are discarded without warning.
+.It ($) Ns Em r No file
 Reads
-.I file
-to after the addressed line.  If
-.I file
-is not specified, then the default
-filename is used.  If there was no default filename prior to the command,
+.Em file
+to after the addressed line.
+If
+.Em file
+is not specified, then the default filename is used.
+If there was no default filename prior to the command,
 then the default filename is set to
-.IR file .
+.Em file Ns No .
 Otherwise, the default filename is unchanged.
 The current address is set to the last line read.
-
-.TP 8
-.RI ($)r \ !command
-Reads
-to after the addressed line
-the standard output of
-.IR `!command' ,
+.It ($) Ns Em r No !command
+Reads to after the addressed line the standard output of
+.Em !command Ns No ,
 (see the
-.RI ! command
-below).
+.Em !
+command below).
 The default filename is unchanged.
 The current address is set to the last line read.
-
-.HP
-.RI (.,.)s /re/replacement/
-.PD 0
-.HP
-.RI (.,.)s  /re/replacement/\fRg\fR
-.HP
-.RI (.,.)s  /re/replacement/n
-.br
-Replaces text in the addressed lines
-matching a regular expression
-.I re
+.Sm off
+.It Xo (.,.) Em s No /re/replacement/ , \ (.,.)
+.Em s No /re/replacement/ Em g , No \ (.,.)
+.Em s No /re/replacement/ Em n
+.Xc
+.Sm on
+Replaces text in the addressed lines matching a regular expression
+.Em re
 with
-.IR replacement .
+.Em replacement Ns No .
 By default, only the first match in each line is replaced.
 If the
-.I `g'
+.Em g
 (global) suffix is given, then every match to be replaced.
 The
-.I `n'
+.Em n
 suffix, where
-.I n
-is a postive number, causes only the
-.IR n th
+.Em n
+is a positive number, causes only the
+.Em n Ns No th
 match to be replaced.
 It is an error if no substitutions are performed on any of the addressed
 lines.
 The current address is set the last line affected.
-
-.I re
+.Pp
+.Em re
 and
-.I replacement
+.Em replacement
 may be delimited by any character other than space and newline
 (see the
-.I `s'
+.Em s
 command below).
 If one or two of the last delimiters is omitted, then the last line
 affected is printed as though the print suffix
-.I `p'
+.Em p
 were specified.
-
-
-An unescaped `&' in
-.I replacement
+.Pp
+An unescaped
+.Ql \e
+in
+.Em replacement
 is replaced by the currently matched text.
 The character sequence
-\fI`\em'\fR,
+.Em \em Ns No ,
 where
-.I m
+.Em m
 is a number in the range [1,9], is replaced by the
-.IR m th
+.Em m Ns No th
 backreference expression of the matched text.
 If
-.I replacement
-consists of a single `%', then
-.I replacement
+.Em replacement
+consists of a single
+.Ql % ,
+then
+.Em replacement
 from the last substitution is used.
 Newlines may be embedded in
-.I replacement
-if they are escaped with a backslash (\\).
-
-.TP 8
-(.,.)s
+.Em replacement
+if they are escaped with a backslash
+.Pq Ql \e .
+.It (.,.) Ns Em s
 Repeats the last substitution.
 This form of the
-.I `s'
+.Em s
 command accepts a count suffix
-.IR `n' ,
+.Em n Ns No ,
 or any combination of the characters
-.IR `r' ,
-.IR `g' ,
+.Em r Ns No ,
+.Em g Ns No ,
 and
-.IR `p' .
+.Em p Ns No .
 If a count suffix
-.I `n'
+.Em n
 is given, then only the
-.IR n th
+.Em n Ns No th
 match is replaced.
 The
-.I `r'
+.Em r
 suffix causes
 the regular expression of the last search to be used instead of the
 that of the last substitution.
 The
-.I `g'
+.Em g
 suffix toggles the global suffix of the last substitution.
 The
-.I `p'
+.Em p
 suffix toggles the print suffix of the last substitution
 The current address is set to the last line affected.
-
-.TP 8
-(.,.)t(.)
+.It (.,.) Ns Em t Ns No (.)
 Copies (i.e., transfers) the addressed lines to after the right-hand
 destination address, which may be the address
-.IR 0
+.Em 0
 (zero).
-The current address is set to the last line
-copied.
-
-.TP 8
-u
+The current address is set to the last line copied.
+.It Em u
 Undoes the last command and restores the current address
 to what it was before the command.
 The global commands
-.IR `g' ,
-.IR `G' ,
-.IR `v' ,
+.Em g Ns No ,
+.Em G Ns No ,
+.Em v Ns No ,
 and
-.IR `V' .
+.Em V Ns No .
 are treated as a single command by undo.
-.I `u'
+.Em u
 is its own inverse.
-
-.TP 8
-.RI (1,$)v /pat/command-list
+.It (1,$) Ns Em v Ns No /re/command-list
 Applies
-.I command-list
+.Em command-list
 to each of the addressed lines not matching a regular expression
-.IR re .
+.Em re Ns No .
 This is similar to the
-.I `g'
+.Em g
 command.
-
-.TP 8
-.RI (1,$)V /re/
+.It (1,$) Ns Em V Ns No /re/
 Interactively edits the addressed lines not matching a regular expression
-.IR re.
+.Em re Ns No .
 This is similar to the
-.I `G'
+.Em G
 command.
-
-.TP 8
-.RI (1,$)w \ file
+.It (1,$) Ns Em w No file
 Writes the addressed lines to
-.IR file .
+.Em file Ns No .
 Any previous contents of
-.I file
+.Em file
 is lost without warning.
 If there is no default filename, then the default filename is set to
-.IR file,
-otherwise it is unchanged.  If no filename is specified, then the default
-filename is used.
+.Em file Ns No ,
+otherwise it is unchanged.
+If no filename is specified, then the default filename is used.
 The current address is unchanged.
-
-.TP 8
-.RI (1,$)wq \ file
+.It (1,$) Ns Em wq No file
 Writes the addressed lines to
-.IR file ,
+.Em file Ns No ,
 and then executes a
-.I `q'
+.Em q
 command.
-
-.TP 8
-.RI (1,$)w \ !command
+.It (1,$) Ns Em w No !command
 Writes the addressed lines to the standard input of
-.IR `!command' ,
+.Em !command Ns No ,
 (see the
-.RI ! command
-below).
+.Em !
+command below).
 The default filename and current address are unchanged.
-
-.TP 8
-.RI (1,$)W \ file
+.It (1,$) Ns Em W No file
 Appends the addressed lines to the end of
-.IR file .
+.Em file Ns No .
 This is similar to the
-.I `w'
+.Em w
 command, expect that the previous contents of file is not clobbered.
 The current address is unchanged.
-
-.TP 8
-x
-Prompts for an encryption key which is used in subsequent reads and
-writes.  If a newline alone is entered as the key, then encryption is
-turned off.  Otherwise, echoing is disabled while a key is read.
-Encryption/decryption is done using the bdes(1) algorithm.
-
-.TP 8
-.RI (.+1)z n
+.It Em x
+Prompts for an encryption key which is used in subsequent reads and writes.
+If a newline alone is entered as the key, then encryption is turned off.
+Otherwise, echoing is disabled while a key is read.
+Encryption/decryption is done using the
+.Xr bdes 1
+algorithm.
+.It (.+1) Ns Em z Ns No n
 Scrolls
-.I n
-lines at a time starting at addressed line.  If
-.I n
+.Em n
+lines at a time starting at addressed line.
+If
+.Em n
 is not specified, then the current window size is used.
 The current address is set to the last line printed.
-
-.TP 8
-.RI ! command
+.It ($) Ns Em =
+Prints the line number of the addressed line.
+.It (.+1) Ns Em newline
+Prints the addressed line, and sets the current address to that line.
+.It Em ! Ns No command
 Executes
-.I command
+.Em command
 via
-.IR sh (1).
+.Xr sh 1 .
 If the first character of
-.I command
-is `!', then it is replaced by text of the
-previous
-.IR `!command' .
-.B ed
+.Em command
+is
+.Em ! Ns No ,
+then it is replaced by text of the previous
+.Em !command Ns No .
+.Nm
 does not process
-.I command
-for backslash (\\) escapes.
+.Em command
+for
+.Em \e
+(backslash) escapes.
 However, an unescaped
-.I `%'
+.Em %
 is replaced by the default filename.
-When the shell returns from execution, a `!'
+When the shell returns from execution, a
+.Em !
 is printed to the standard output.
 The current line is unchanged.
-
-.TP 8
-($)=
-Prints the line number of the addressed line.
-
-.TP 8
-(.+1)newline
-Prints the addressed line, and sets the current address to
-that line.
-
-.SH FILES
-.TP 20
-/tmp/ed.*
-Buffer file
-.PD 0
-.TP 20
-ed.hup
-The file to which
-.B ed
-attempts to write the  buffer if the terminal hangs up.
-
-.SH SEE ALSO
-
-.IR vi (1),
-.IR sed (1),
-.IR regex (3),
-.IR bdes (1),
-.IR sh (1).
-
-USD:12-13
-
-B. W. Kernighan and P. J. Plauger,
-.I Software Tools in Pascal ,
-Addison-Wesley, 1981.
-
-.SH LIMITATIONS
-.B ed
+.El
+.Sh LIMITATIONS
+.Nm
 processes
-.I file
-arguments for backslash escapes, i.e.,  in a filename,
-any characters preceded by a backslash (\\) are
-interpreted literally.
-
+.Em file
+arguments for backslash escapes, i.e., in a filename,
+any characters preceded by a backslash
+.Pq Ql \e
+are interpreted literally.
+.Pp
 If a text (non-binary) file is not terminated by a newline character,
 then
-.B ed
-appends one on reading/writing it.  In the case of a binary file,
-.B ed
+.Nm
+appends one on reading/writing it.
+In the case of a binary file,
+.Nm
 does not append a newline on reading/writing.
-
-per line overhead: 4 ints
-
-.SH DIAGNOSTICS
+.Sh DIAGNOSTICS
 When an error occurs,
-.B ed
-prints a `?' and either returns to command mode
-or exits if its input is from a script.
-An explanation of the last error can be
-printed with the
-.I `h'
+.Nm
+prints a
+.Dq ?
+and either returns to command mode or exits if its input is from a script.
+An explanation of the last error can be printed with the
+.Em h
 (help) command.
-
-Since the 
-.I `g'
-(global) command  masks any errors from failed searches and substitutions,
+.Pp
+Since the
+.Em g
+(global) command masks any errors from failed searches and substitutions,
 it can be used to perform conditional operations in scripts; e.g.,
-.sp
-.RS
-g/\fIold\fR/s//\fInew\fR/
-.RE
-.sp
+.Bd -literal -offset indent
+g/old/s//new/
+.Ed
+.Pp
 replaces any occurrences of
-.I old
+.Em old
 with
-.IR new .
+.Em new Ns No .
+.Pp
 If the
-.I `u'
+.Em u
 (undo) command occurs in a global command list, then
 the command list is executed only once.
-
+.Pp
 If diagnostics are not disabled, attempting to quit
-.B ed
-or edit another file before writing a modified buffer
-results in an error.
+.Nm
+or edit another file before writing a modified buffer results in an error.
 If the command is entered a second time, it succeeds,
 but any changes to the buffer are lost.
+.Sh FILES
+.Bl -tag -width /tmp/ed.* -compact
+.It Pa /tmp/ed.*
+buffer file
+.It Pa ed.hup
+where
+.Nm
+attempts to write the buffer if the terminal hangs up
+.El
+.Sh SEE ALSO
+.Xr bdes 1 ,
+.Xr sed 1 ,
+.Xr sh 1 ,
+.Xr vi 1 ,
+.Xr regex 3
+.Pp
+USD:12-13
+.Rs
+.%A B. W. Kernighan
+.%A P. J. Plauger
+.%B Software Tools in Pascal
+.%O Addison-Wesley
+.%D 1981
+.Re
+.Sh HISTORY
+An
+.Nm
+command appeared in
+.At v1 .