-
Notifications
You must be signed in to change notification settings - Fork 10
/
ed.unix.text.editor.cheat.sheet.txt
367 lines (358 loc) · 25.4 KB
/
ed.unix.text.editor.cheat.sheet.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
.---------------------------------------------------------------------.
| |
| The Original UNIX Text Editor |
| Ed Cheat Sheet |
| |
'---------------------------------------------------------------------'
| Peteris Krumins ([email protected]), 2007.08.22 |
| http://www.catonmat.net - good coders code, great reuse |
'---------------------------------------------------------------------'
====================== Line Addressing Summary ======================
.----------------.----------------------------------------------------.
| | |
| Address Symbol | Description |
| | |
'----------------+----------------------------------------------------'
| . | The current line (address) in the buffer. |
'----------------+----------------------------------------------------'
| $ | The last line in the buffer. |
'----------------+----------------------------------------------------'
| n | The nth, line in the buffer where n is a number |
| | in the range [0,$]. |
'----------------+----------------------------------------------------'
| $ | The last line in the buffer. |
'----------------+----------------------------------------------------'
| - | The previous line. This is equivalent to -1 and |
| ^ | may be repeated with cumulative effect. |
'----------------+----------------------------------------------------'
| -n | The nth previous line, where n is a non-negative |
| ^n | number. |
'----------------+----------------------------------------------------'
| + | The next line. This is equivalent to +1 and may |
| | be repeated with cumulative effect. |
'----------------+----------------------------------------------------'
| +n | The nth next line, where n is a non-negative |
| whitespace n | number. |
| | Whitespace followed by a number n is interpreted |
| | as +n. |
'----------------+----------------------------------------------------'
| , | The first through last lines in the buffer. |
| % | This is equivalent to the address range 1,$. |
'----------------+----------------------------------------------------'
| ; | The current through last lines in the buffer. |
| | This is equivalent to the address range .,$. |
'----------------+----------------------------------------------------'
| /re/ | The next line containing the regular |
| | expression re. |
| | The search wraps to the beginning of the buffer |
| | and continues down to the current line, if |
| | necessary. |
| | // repeats the last search. |
'----------------+----------------------------------------------------'
| ?re? | The previous line containing the regular |
| | expression re. |
| | The search wraps to the end of the buffer and |
| | continues up to the current line, if necessary. |
| | ?? repeats the last search. |
'----------------+----------------------------------------------------'
| 'lc | The line previously marked by a `k' (mark) |
| | command, where lc is a lower case letter. |
'----------------'----------------------------------------------------'
Each address in a comma-delimited range is interpreted relative
to the current address.
In a semicolon-delimited range, the 1st address is used to set
the current address, and the 2nd address is interpreted
relative to the first.
========================== Command Summary ==========================
.-------------------------.-------------------------------------------.
| | |
| Command | Description |
| | |
'-------------------------+-------------------------------------------'
| (.)a | Appends text to the buffer after the |
| | addressed line, which may be theaddress |
| | 0 (zero). Text is entered in input mode. |
| | The current address is set to last line |
| | entered. |
'-------------------------+-------------------------------------------'
| (.,.)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. |
'-------------------------+-------------------------------------------'
| (.,.)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. |
'-------------------------+-------------------------------------------'
| e file | Edits file, and sets the default |
| | filename. If 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. |
'-------------------------+-------------------------------------------'
| e !command | Edits the standard output of `!command', |
| | (see !command below). The default |
| | filename is unchanged. Any lines in the |
| | buffer are deleted before the output of |
| | command is read. The current address is |
| | set to the last line read. |
'-------------------------+-------------------------------------------'
| E file | Edits file unconditionally. This is |
| | similar to the e command, except that |
| | unwritten changes are discarded without |
| | warning. The current address is set to |
| | the last line read. |
'-------------------------+-------------------------------------------'
| f file | Sets the default filename to file. If |
| | file is not specified, then the default |
| | unescaped filename is printed. |
'-------------------------+-------------------------------------------'
| (1,$)g/re/command-list | Applies command-list to each of the |
| | addressed lines matching a regular |
| | expression re. The current address is set |
| | to the line currently matched before |
| | command-list is executed. At the end of |
| | the `g' command, the current address is |
| | set to the last line affected by |
| | command-list. |
| | |
| | Each command in command-list must be on a |
| | separate line, and every line except for |
| | the last must be terminated by a |
| | backslash (\). Any commands are allowed, |
| | except for `g', `G', `v', and `V'. |
| | A newline alone in command-list is |
| | equivalent to a `p' command. |
'-------------------------+-------------------------------------------'
| (1,$)G/re/ | Interactively edits the addressed lines |
| | matching a regular expression re. For |
| | each matching line, the line is printed, |
| | the current address is set, and the user |
| | is prompted to enter a command-list. |
| | At the end of the `G' command, the |
| | current address is set to the last line |
| | affected by (the last) command-list. |
| | |
| | The format of command-list is the same as |
| | that of the `g' command. A newline alone |
| | acts as a null command list. A single `&' |
| | repeats the last non-null command list. |
'-------------------------+-------------------------------------------'
| 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. |
'-------------------------+-------------------------------------------'
| h | Prints an explanation of the last error. |
'-------------------------+-------------------------------------------'
| (.)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. |
'-------------------------+-------------------------------------------'
| (.,.+1)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. |
'-------------------------+-------------------------------------------'
| (.)klc | Marks a line with a lower case letter lc. |
| | The line can then be addressed as 'lc |
| | (i.e., a single quote followed by lc) in |
| | subsequent commands. The mark is not |
| | cleared until the line is deleted or |
| | otherwise modified. |
'-------------------------+-------------------------------------------'
| (.,.)l | Prints the addressed lines unambiguously. |
| | If invoked from a terminal, ed pauses at |
| | the end of each page until a newline is |
| | entered. The current address is set to |
| | the last line printed. |
'-------------------------+-------------------------------------------'
| (.,.)m(.) | Moves lines in the buffer. The addressed |
| | lines are moved to after the right-hand |
| | destination address, which may be the |
| | address 0 (zero). The current address is |
| | set to the last line moved. |
'-------------------------+-------------------------------------------'
| (.,.)n | Prints the addressed lines along with |
| | their line nums. The curr. addr is set to |
| | the last line printed |
'-------------------------+-------------------------------------------'
| (.,.)p | Prints the addressed lines. If invoked |
| | from a terminal, ed pauses at the end of |
| | each page until a newline is entered. |
| | The current address is set to the last |
| | line printed. |
'-------------------------+-------------------------------------------'
| P | Toggles the command prompt on and off. |
| | Unless a prompt was specified by with |
| | command-line option -p string, the |
| | command prompt is by default turned off. |
'-------------------------+-------------------------------------------'
| q | Quits ed. |
'-------------------------+-------------------------------------------'
| Q | Quits ed unconditionally. This is similar |
| | to the q command, except that unwritten |
| | changes are discarded without warning. |
'-------------------------+-------------------------------------------'
| ($)r file | Reads file to after the addressed line. |
| | If 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 file. |
| | Otherwise, the default filename is |
| | unchanged. The current address is set to |
| | the last line read. |
'-------------------------+-------------------------------------------'
| ($)r !command | Reads to after the addressed line the |
| | standard output of `!command', |
| | (see the !command below). The default |
| | filename is unchanged. The current |
| | address is set to the last line read. |
'-------------------------+-------------------------------------------'
| (.,.)s/re/replacement/ | Replaces text in the addressed lines |
| (.,.)s/re/replacement/g | matching a regular expression re with |
| (.,.)s/re/replacement/n | replacement. By default, only the first |
| | match in each line is replaced. |
| | If the `g' (global) suffix is given, then |
| | every match to be replaced. |
| | The `n' suffix, where n is a positive |
| | number, causes only the n-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. |
| | |
| | re and replacement may be delimited by |
| | any character other than space and |
| | newline (see the `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 `p' |
| | were specified. |
| | |
| | An unescaped `&' in replacement is |
| | replaced by the currently matched text. |
| | The character sequence `\m', where m is a |
| | number in the range [1,9], is replaced by |
| | the m-th backreference expression of the |
| | matched text. If replacement consists of |
| | a single `%', then replacement from the |
| | last substitution is used. Newlines may |
| | be embedded in replacement if they are |
| | escaped with a backslash (\). |
'-------------------------+-------------------------------------------'
| (.,.)s | Repeats the last substitution. This form |
| | of the `s' command accepts a count suffix |
| | `n', or any combination of the characters |
| | `r', `g', and `p'. |
| | If a count suffix `n' is given, then only |
| | the n-th match is replaced. |
| | The `r' suffix causes the regular |
| | expression of the last search to be used |
| | instead of that of the last substitution. |
| | The `g' suffix toggles the global suffix |
| | of the last substitution. |
| | The `p' suffix toggles the print suffix |
| | of the last substitution. The current |
| | address is set to the last line affected. |
'-------------------------+-------------------------------------------'
| (.,.)t(.) | Copies (i.e., transfers) the addressed |
| | lines to after the right-hand destination |
| | address, which may be the address |
| | 0 (zero). The current address is set to |
| | the last line copied. |
'-------------------------+-------------------------------------------'
| u | Undoes the last command and restores the |
| | current address to what it was before the |
| | command. The global commands `g', `G', |
| | `v', and `V' are treated as a single |
| | command by undo. `u' is its own inverse. |
'-------------------------+-------------------------------------------'
| (1,$)v/re/command-list | Applies command-list to each of the |
| | addressed lines not matching a regular |
| | expression re. This is similar to the |
| | `g' command. |
'-------------------------+-------------------------------------------'
| (1,$)V/re/ | Interactively edits the addressed lines |
| | not matching a regular expression re. |
| | This is similar to the `G' command. |
'-------------------------+-------------------------------------------'
| (1,$)w file | Writes the addressed lines to file. Any |
| | previous contents of file is lost without |
| | warning. If there is no default filename, |
| | then the default filename is set to file, |
| | otherwise it is unchanged. If no filename |
| | is specified, then the default filename |
| | is used. The current address is unchanged.|
'-------------------------+-------------------------------------------'
| (1,$)wq file | Writes the addressed lines to file, and |
| | then executes a `q' command. |
'-------------------------+-------------------------------------------'
| (1,$)w !command | Writes the addressed lines to the |
| | standard input of `!command', (see the |
| | !command below). |
| | The defaultfilename and current address |
| | are unchanged. |
'-------------------------+-------------------------------------------'
| (1,$)W file | Appends the addressed lines to the end of |
| | file. This is similar to the `w' command, |
| | expect that the previous contents of file |
| | is not clobbered. The current address is |
| | unchanged. |
'-------------------------+-------------------------------------------'
| (.)x | Copies (puts) the contents of the cut |
| | buffer to after the addressed line. |
| | The current address is set to the last |
| | line copied. |
'-------------------------+-------------------------------------------'
| (.,.)y | Copies (yanks) the addressed lines to the |
| | cut buffer. The cut buffer is overwritten |
| | by subsequent `y', `s', `j', `d', or `c' |
| | commands. The current address is |
| | unchanged. |
'-------------------------+-------------------------------------------'
| (.+1)zn | Scrolls n lines at a time starting at |
| | addressed line. If n is not specified, |
| | then the current window size is used. |
| | The current address is set to the last |
| | line printed. |
'-------------------------+-------------------------------------------'
| !command | Executes command via sh(1). If the first |
| | character of command is `!', then it is |
| | replaced by text of the previous |
| | `!command'. ed does not process command |
| | for backslash (\) escapes. However, an |
| | unescaped `%' is replaced by the default |
| | filename. When the shell returns from |
| | execution, a `!' is printed to the |
| | standard output. The current line is |
| | unchanged. |
'-------------------------+-------------------------------------------'
| (.,.)# | Begins a comment; the rest of the line, |
| | up to a newline, is ignored. If a line |
| | address followed by a semicolon is given, |
| | then the current address is set to that |
| | address. Otherwise, the current address |
| | is unchanged. |
'-------------------------+-------------------------------------------'
| ($)= | Prints the line number of the addressed |
| | line. |
'-------------------------+-------------------------------------------'
| (.+1)newline | Prints the addressed line, and sets the |
| | current address to that line. |
'-------------------------'-------------------------------------------'
=====================================================================
.---------------------------------------------------------------------.
| Peteris Krumins ([email protected]), 2007.08.22 |
| http://www.catonmat.net - good coders code, great reuse |
'---------------------------------------------------------------------'