|
|
1.1 root 1: ED(1) UNIX Reference Manual ED(1)
2:
3: NNAAMMEE
4: eedd - text editor
5:
6: SSYYNNOOPPSSIISS
7: eedd [--] [--xx] [_f_i_l_e]
8:
9: DDEESSCCRRIIPPTTIIOONN
10: EEdd is the standard text editor.
11:
12: If a _f_i_l_e argument is given, eedd simulates an ee command (see below) on the
13: named file; that is to say, the file is read into eedd ''ss buffer so that it
14: can be edited.
15:
16: --xx An xx command is simulated first to handle an encrypted file.
17:
18: -- Suppresses the printing of explanatory output and should be used
19: when the standard input is an editor script.
20:
21: EEdd operates on a copy of any file it is editing; changes made in the copy
22: have no effect on the file until a ww (write) command is given. The copy
23: of the text being edited resides in a temporary file called the _b_u_f_f_e_r.
24:
25: Commands to eedd have a simple and regular structure: zero or more
26: _a_d_d_r_e_s_s_e_s followed by a single character _c_o_m_m_a_n_d, possibly followed by
27: parameters to the command. These addresses specify one or more lines in
28: the buffer. Missing addresses are supplied by default.
29:
30: In general, only one command may appear on a line. Certain commands al-
31: low the addition of text to the buffer. While eedd is accepting text, it
32: is said to be in _i_n_p_u_t _m_o_d_e. In this mode, no commands are recognized;
33: all input is merely collected. Input mode is left by typing a period `..'
34: alone at the beginning of a line.
35:
36: EEdd supports a limited form of _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n notation. A regular ex-
37: pression specifies a set of strings of characters. A member of this set
38: of strings is said to be _m_a_t_c_h_e_d by the regular expression. In the fol-
39: lowing specification for regular expressions the word `character' means
40: any character but newline.
41:
42: 1. Any character except a special character matches itself. Special
43: characters are the regular expression delimiter plus `\\[[..' and
44: sometimes `^^**$$'.
45:
46: 2. A `..' matches any character.
47:
48: 3. A `\' followed by any character except a digit or () matches that
49: character.
50:
51: 4. A nonempty string [_s] or ([^^_s]) matches any character in (or not
52: in) _s. In _s, `\' has no special meaning, and may only appear as
53: the first letter. A substring _a-_b, with _a and _b in ascending ASCII
54: order, stands for the inclusive range of ASCII characters.
55:
56: 5. A regular expression of form 1-4 followed by * matches a sequence
57: of 0 or more matches of the regular expression.
58:
59: 6. A regular expression, _x, of form 1-8, bracketed \(_x\) matches what
60: _x matches.
61:
62: 7. A \ followed by a digit _n matches a copy of the string that the
63: bracketed regular expression beginning with the _n'th \( matched.
64:
65: 8. A regular expression of form 1-8, _x, followed by a regular expres-
66: sion of form 1-7, _y matches a match for _x followed by a match for
67: _y, with the _x match being as long as possible while still permit-
68: ting a _y match.
69:
70: 9. A regular expression of form 1-8 preceded by `^' (or followed by
71: `$'), is constrained to matches that begin at the left (or end at
72: the right) end of a line.
73:
74: 10. A regular expression of form 1-9 picks out the longest among the
75: leftmost matches in a line.
76:
77: 11. An empty regular expression stands for a copy of the last regular
78: expression encountered.
79:
80: Regular expressions are used in addresses to specify lines and in one
81: command (see _s below) to specify a portion of a line which is to be re-
82: placed. If it is desired to use one of the regular expression metachar-
83: acters as an ordinary character, that character may be preceded by `\'.
84: This also applies to the character bounding the regular expression (often
85: `/') and to `\' itself.
86:
87: To understand addressing in eedd it is necessary to know that at any time
88: there is a _c_u_r_r_e_n_t _l_i_n_e. Generally speaking, the current line is the
89: last line affected by a command; however, the exact effect on the current
90: line is discussed under the description of the command. Addresses are
91: constructed as follows.
92:
93: 1. The character `..' addresses the current line.
94:
95: 2. The character `$$' addresses the last line of the buffer.
96:
97: 3. A decimal number _n addresses the _n'th line of the buffer.
98:
99: 4. `'_x' addresses the line marked with the name _x, which must be a
100: lower-case letter. Lines are marked with the _k command described
101: below.
102:
103: 5. A regular expression enclosed in slashes `/' addresses the line
104: found by searching forward from the current line and stopping at
105: the first line containing a string that matches the regular
106: expression. If necessary the search wraps around to the beginning
107: of the buffer.
108:
109: 6. A regular expression enclosed in queries `?' addresses the line
110: found by searching backward from the current line and stopping at
111: the first line containing a string that matches the regular
112: expression. If necessary the search wraps around to the end of the
113: buffer.
114:
115: 7. An address followed by a plus sign `+' or a minus sign `-' followed
116: by a decimal number specifies that address plus (resp. minus) the
117: indicated number of lines. The plus sign may be omitted.
118:
119: 8. If an address begins with `+' or `-' the addition or subtraction is
120: taken with respect to the current line; e.g. `-5' is understood to
121: mean `.-5' .
122:
123: 9. If an address ends with `+' `-', then 1 is added (resp.
124: subtracted). As a consequence of this rule and rule 8, the address
125: `-' refers to the line before the current line. Moreover, trailing
126: `+' and `-' characters have cumulative effect, so `--' refers to
127: the current line less 2.
128:
129: 10. To maintain compatibility with earlier versions of the editor, the
130: character `^' in addresses is equivalent to `-'.
131:
132: Commands may require zero, one, or two addresses. Commands which require
133: no addresses regard the presence of an address as an error. Commands
134: which accept one or two addresses assume default addresses when
135: insufficient are given. If more addresses are given than such a command
136: requires, the last one or two (depending on what is accepted) are used.
137:
138: Addresses are separated from each other typically by a comma `,' They may
139: also be separated by a semicolon `;' In this case the current line `.' .
140: is set to the previous address before the next address is interpreted.
141: This feature can be used to determine the starting line for forward and
142: backward searches (`/' `?'). The second address of any two-address
143: sequence must correspond to a line following the line corresponding to
144: the first address. The special form `%' is an abbreviation for the
145: address pair `1,$'.
146:
147: In the following list of eedd commands, the default addresses are shown in
148: parentheses. The parentheses are not part of the address, but are used
149: to show that the given addresses are the default.
150:
151: As mentioned, it is generally illegal for more than one command to appear
152: on a line. However, most commands may be suffixed by `p' or by `l', in
153: which case the current line is either printed or listed respectively in
154: the way discussed below. Commands may also be suffixed by `n', meaning
155: the output of the command is to be line numbered. These suffixes may be
156: combined in any order.
157:
158: (.)aa
159:
160: <text>
161:
162: .. The append command reads the given text and appends it after the
163: addressed line. `..' is left on the last line input, if there were
164: any, otherwise at the addressed line. Address `0' is legal for
165: this command; text is placed at the beginning of the buffer.
166:
167: (..,..)cc
168:
169: <text>
170:
171: .. The change command deletes the addressed lines, then accepts input
172: text which replaces these lines. `..' is left at the last line in-
173: put; if there were none, it is left at the line preceding the
174: deleted lines.
175:
176: (..,..)dd
177: The delete command deletes the addressed lines from the buffer.
178: The line originally after the last line deleted becomes the current
179: line; if the lines deleted were originally at the end, the new last
180: line becomes the current line.
181:
182: ee _f_i_l_e_n_a_m_e
183: The edit command causes the entire contents of the buffer to be
184: deleted, and then the named file to be read in. `..' is set to the
185: last line of the buffer. The number of characters read is typed.
186: _f_i_l_e_n_a_m_e is remembered for possible use as a default file name in a
187: subsequent rr or ww command. If _f_i_l_e_n_a_m_e is missing, the remembered
188: name is used.
189:
190: EE _f_i_l_e_n_a_m_e
191: This command is the same as ee, except that no diagnostic results
192: when no ww has been given since the last buffer alteration.
193:
194: ff _f_i_l_e_n_a_m_e
195: The filename command prints the currently remembered file name. If
196: _f_i_l_e_n_a_m_e is given, the currently remembered file name is changed to
197: _f_i_l_e_n_a_m_e.
198:
199: (1,$$)gg/_r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n/_c_o_m_m_a_n_d _l_i_s_t
200: In the global command, the first step is to mark every line which
201: matches the given regular expression. Then for every such line,
202: the given command list is executed with `..' initially set to that
203: line. A single command or the first of multiple commands appears
204: on the same line with the global command. All lines of a multi-
205: line list except the last line must be ended with `\\'. AA, ii,, and cc
206: commands and associated input are permitted; the `..' terminating
207: input mode may be omitted if it would be on the last line of the
208: command list. The commands gg and vv are not permitted in the com-
209: mand list.
210:
211: (.)ii
212:
213: <text>
214:
215: .. This command inserts the given text before the addressed line. `..'
216: is left at the last line input, or, if there were none, at the line
217: before the addressed line. This command differs from the aa command
218: only in the placement of the text.
219:
220: (..,..++11)jj
221: This command joins the addressed lines into a single line;
222: intermediate newlines simply disappear. `..' is left at the
223: resulting line.
224:
225: (.)kk_x
226: The mark command marks the addressed line with name _x, which must
227: be a lower-case letter. The address form `'_x' then addresses this
228: line.
229:
230: (..,..)ll
231: The list command prints the addressed lines in an unambiguous way:
232: non-graphic characters are printed in two-digit octal, and long
233: lines are folded. The _l command may be placed on the same line
234: after any non-i/o command.
235:
236: (..,..)mm_a
237: The move command repositions the addressed lines after the line
238: addressed by _a. The last of the moved lines becomes the current
239: line.
240:
241: (..,..)pp
242: The print command prints the addressed lines. `..' is left at the
243: last line printed. The pp command may be placed on the same line
244: after any non-i/o command.
245:
246: (..,..)PP
247: This command is a synonym for pp.
248:
249: qq The quit command causes eedd to exit. No automatic write of a file
250: is done.
251:
252: QQ This command is the same as qq, except that no diagnostic results
253: when no ww has been given since the last buffer alteration.
254:
255: ($$)rr _f_i_l_e_n_a_m_e
256: The read command reads in the given file after the addressed line.
257: If no file name is given, the remembered file name, if any, is used
258: (see ee and ff commands). The file name is remembered if there was
259: no remembered file name already. Address `0' is legal for rr and
260: causes the file to be read at the beginning of the buffer. If the
261: read is successful, the number of characters read is typed. `..' is
262: left at the last line read in from the file.
263:
264: (..,..)ss/_r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n/_r_e_p_l_a_c_e_m_e_n_t/ or
265:
266: (..,..)ss/_r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n/_r_e_p_l_a_c_e_m_e_n_t/gg
267: The substitute command searches each addressed line for an
268: occurrence of the specified regular expression. On each line in
269: which a match is found, all matched strings are replaced by the
270: replacement specified, if the global replacement indicator gg ap-
271: pears after the command. If the global indicator does not appear,
272: only the first occurrence of the matched string is replaced. It is
273: an error for the substitution to fail on all addressed lines. Any
274: punctuation character may be used instead of `//' to delimit the
275: regular expression and the replacement. `..' is left at the last
276: line substituted. An ampersand `&&' appearing in the replacement is
277: replaced by the string matching the regular expression. The
278: special meaning of `&&' in this context may be suppressed by
279: preceding it by `\\'. The characters `\\_n' where _n is a digit, are
280: replaced by the text matched by the _n'th regular subexpression
281: enclosed between `\\(('. and `\\))'. When nested, parenthesized
282: subexpressions are present, _n is determined by counting occurrences
283: of `\\(('. starting from the left. Lines may be split by
284: substituting new-line characters into them. The new-line in the
285: replacement string must be escaped by preceding it by `\\'. One or
286: two trailing delimiters may be omitted, implying the pp suffix. The
287: special form ss followed by _n_o delimiters repeats the most recent
288: substitute command on the addressed lines. The ss may be followed
289: by the letters rr (use the most recent regular expression for the
290: left hand side, instead of the most recent left hand side of a sub-
291: stitute command), pp (complement the setting of the pp suffix from
292: the previous substitution), or gg (complement the setting of the gg
293: suffix). These letters may be combined in any order.
294:
295: (..,..)tt_a
296: This command acts just like the mm command, except that a copy of
297: the addressed lines is placed after address _a (which may be 0).
298: `..' is left on the last line of the copy.
299:
300: (..,..)uu
301: The undo command restores the buffer to it's state before the most
302: recent buffer modifying command. The current line is also
303: restored. Buffer modifying commands are aa, cc, dd, gg, ii and vv. For
304: purposes of undo, gg and vv are considered to be a single buffer
305: modifying command. Undo is its own inverse. When eedd runs out of
306: memory (at about 8000 lines on any 16 bit mini-computer such as the
307: PDP-11) This full undo is not possible, and uu can only undo the ef-
308: fect of the most recent substitute on the current line. This res-
309: tricted undo also applies to editor scripts when eedd is invoked with
310: the -- option.
311:
312: (1,$$)vv/_r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n/_c_o_m_m_a_n_d _l_i_s_t
313: This command is the same as the global command gg except that the
314: command list is executed gg with `..' initially set to every line
315: _e_x_c_e_p_t those matching the regular expression. (1, $) 192.Tp Cx ( 1
316: ,$$)ww _f_i_l_e_n_a_m_e The write command writes the addressed lines onto the
317: given file. If the file does not exist, it is created. The file
318: name is remembered if there was no remembered file name already.
319: If no file name is given, the remembered file name, if any, is used
320: (see ee and ff commands). `..' is unchanged. If the command is
321: successful, the number of characters written is printed.
322:
323: (1,$$)WW _f_i_l_e_n_a_m_e
324: This command is the same as ww, except that the addressed lines are
325: appended to the file.
326:
327: (1,$$)wwqq _f_i_l_e_n_a_m_e
328: This command is the same as ww except that afterwards a qq command is
329: done, exiting the editor after the file is written.
330:
331: x A key string is demanded from the standard input. Later rr, ee and ww
332: commands will encrypt and decrypt the text with this key by the al-
333: gorithm of crypt(1). An explicitly empty key turns off encryption.
334: 1 ++11 )zz or,
335:
336: (1++11)zz_n
337: This command scrolls through the buffer starting at the addressed
338: line. 22 (or _n, if given) lines are printed. The last line print-
339: ed becomes the current line. The value _n is sticky, in that it be-
340: comes the default for future zz commands.
341:
342: ($$)==
343: The line number of the addressed line is typed. `..' is unchanged
344: by this command.
345:
346: !!<shell command>
347: The remainder of the line after the `!' is sent to sh(1) to be
348: interpreted as a command. `..' is unchanged.
349:
350: (..++11,..++11)<newline>
351: An address alone on a line causes the addressed line to be printed.
352: A blank line alone is equivalent to ..++11 it is useful for stepping
353: through text. If two addresses are present with no intervening
354: semicolon, eedd prints the range of lines. If they are separated by
355: a semicolon, the second line is printed.
356:
357: If an interrupt signal (ASCII DEL) is sent, eedd prints `?interrupted' and
358: returns to its command level.
359:
360: Some size limitations: 512 characters per line, 256 characters per global
361: command list, 64 characters per file name, and, on mini computers, 128K
362: characters in the temporary file. The limit on the number of lines
363: depends on the amount of core: each line takes 2 words.
364:
365: When reading a file, eedd discards ASCII NUL characters and all characters
366: after the last newline. It refuses to read files containing non-ASCII
367: characters.
368:
369: FFIILLEESS
370: /_t_m_p/_e*
371: _e_d_h_u_p work is saved here if terminal hangs up
372:
373:
374: SSEEEE AALLSSOO
375: ex(1), sed(1), crypt(1)
376: B. W. Kernighan, _A _T_u_t_o_r_i_a_l _I_n_t_r_o_d_u_c_t_i_o_n _t_o _t_h_e _E_D _T_e_x_t _E_d_i_t_o_r
377: B. W. Kernighan, _A_r _A_d_v_a_n_c_e_d _e_d_i_t_i_n_g _o_n _U_N_I_X
378:
379: HHIISSTTOORRYY
380: The eedd command appeared in Version 6 AT&T UNIX.
381:
382: DDIIAAGGNNOOSSTTIICCSS
383: `name' for inaccessible file; `?self-explanatory message' for other er-
384: rors.
385:
386: To protect against throwing away valuable work, a qq or ee command is con-
387: sidered to be in error, unless a ww has occurred since the last buffer
388: change. A second qq or ee will be obeyed regardless.
389:
390: BBUUGGSS
391: The ll command mishandles DEL.
392: The uunnddoo command causes marks to be lost on affected lines.
393: The xx command, --xx option, and special treatment of hangups only work on
394: UNIX.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.