Commit | Line | Data |
---|---|---|
42410e64 KM |
1 | .\" @(#)jove.1 6.1 (Berkeley) %G% |
2 | .\" | |
3 | .\" ditroff -ms | |
4 | .de IQ | |
5 | \\fI\\$1\\fP | |
6 | .. | |
7 | .de dc | |
8 | .NH 2 | |
9 | \\$1 | |
10 | .if '\\$2'(variable)' (variable) | |
11 | .if !'\\$2'(variable)' (\\$2) | |
12 | .LP | |
13 | .. | |
14 | .nr LL 6.5i | |
15 | .nr LT 6.5i | |
16 | .EH 'USD:17-%''JOVE Manual for UNIX Users' | |
17 | .OH 'JOVE Manual for UNIX Users''USD:17-%' | |
18 | .LP | |
19 | .TL | |
20 | JOVE Manual for UNIX Users | |
21 | .AU | |
22 | Jonathan Payne | |
23 | (revised for 4.3BSD by Doug Kingston and Mark Seiden) | |
24 | .AI | |
25 | .AB no | |
26 | .AE | |
27 | .NH 1 | |
28 | Introduction | |
29 | .XS \n(PN | |
30 | \*(SN Introduction | |
31 | .XE | |
32 | .LP | |
33 | \s-2JOVE\s0* | |
34 | .FS | |
35 | *\s-2JOVE\s0 stands for Jonathan's Own Version of Emacs. | |
36 | .FE | |
37 | is an advanced, self-documenting, customizable real-time display editor. | |
38 | It (and this tutorial introduction) are based on the original EMACS editor and user | |
39 | manual written at M.I.T. by Richard Stallman+. | |
40 | .FS | |
41 | +Although \s-2JOVE\s0 is meant to be compatible with EMACS, | |
42 | and indeed many of the basic commands are very similar, | |
43 | there are some major differences between the two editors, | |
44 | and you should not rely on their behaving identically. | |
45 | .FE | |
46 | .LP | |
47 | \s-2JOVE\s0 is considered a | |
48 | .I display | |
49 | editor because normally the text being | |
50 | edited is visible on the screen and is updated automatically as you | |
51 | type your commands. | |
52 | .LP | |
53 | It's considered a | |
54 | .I real-time | |
55 | editor because the display is updated very | |
56 | frequently, usually after each character or pair of characters you type. | |
57 | This minimizes the amount of information you must keep in your | |
58 | head as you edit. | |
59 | .LP | |
60 | \s-2JOVE\s0 is | |
61 | .I advanced | |
62 | because it provides facilities that go beyond | |
63 | simple insertion and deletion: | |
64 | filling of text; | |
65 | automatic indentations of programs; | |
66 | view more than one file at once; | |
67 | and dealing in terms of characters, words, lines, sentences and paragraphs. | |
68 | It is much easier | |
69 | to type one command meaning "go to the end of the paragraph" than to | |
70 | find the desired spot with repetition of simpler commands. | |
71 | .LP | |
72 | .I Self-documenting | |
73 | means that at almost any time you can easily | |
74 | find out what a command does, | |
75 | or to find all the commands that pertain to a topic. | |
76 | .LP | |
77 | .I Customizable | |
78 | means that you can change the definition of \s-2JOVE\s0 commands | |
79 | in little ways. | |
80 | For example, you can rearrange the command set; | |
81 | if you prefer to use arrow keys for the four basic cursor motion commands | |
82 | (up, down, left and right), you can. | |
83 | Another sort of customization is | |
84 | writing new commands by combining built in commands. | |
85 | .NH 1 | |
86 | The Organization of the Screen | |
87 | .XS \n(PN | |
88 | \*(SN The Organization of the Screen | |
89 | .XE | |
90 | .LP | |
91 | \s-2JOVE\s0 divides the screen up into several sections. | |
92 | The biggest of these sections is used to display the text you are editing. | |
93 | The terminal's cursor shows the position of \fIpoint\fP, | |
94 | the location at which editing takes place. | |
95 | While the cursor appears to point \fIat\fP a character, | |
96 | point should be thought of as between characters; | |
97 | it points \fIbefore\fP the character that the cursor appears on top of. | |
98 | Terminals have only one cursor, | |
99 | and when output is in progress it must appear where the typing is being done. | |
100 | This doesn't mean that point is moving; | |
101 | it is only that \s-2JOVE\s0 has no way of | |
102 | showing you the location of point except when the terminal is idle. | |
103 | .LP | |
104 | The lines of the screen are usually available for displaying text but | |
105 | sometimes are pre-empted by typeout from certain commands (such as a | |
106 | listing of all the editor commands). | |
107 | Most of the time, | |
108 | output from commands like these is only desired for a short period of time, | |
109 | usually just long enough to glance at it. | |
110 | When you have finished looking at the output, | |
111 | you can type Space to make your text reappear. | |
112 | (Usually a Space that you type inserts itself, but when there is typeout on | |
113 | the screen, it does nothing but get rid of that). | |
114 | Any other command executes normally, | |
115 | .I after | |
116 | redrawing your text. | |
117 | .NH 2 | |
118 | The Message Line | |
119 | .XS \n(PN 5n | |
120 | \*(SN The Message Line | |
121 | .XE | |
122 | .LP | |
123 | The bottom line on the screen, called the | |
124 | \fImessage line\fP, | |
125 | is reserved for printing messages and for accepting input from the user, | |
126 | such as filenames or search strings. | |
127 | When | |
128 | \s-2JOVE\s0 | |
129 | prompts for input, | |
130 | the cursor will temporarily appear on the bottom line, waiting for you | |
131 | to type a string. | |
132 | When you have finished typing your input, you can | |
133 | type a Return to send it to \s-2JOVE\s0. | |
134 | If you change your mind about running the command that is waiting for input, | |
135 | you can type Control-G to abort, | |
136 | and you can continue with your editing. | |
137 | .LP | |
138 | When \s-2JOVE\s0 is prompting for a filename, | |
139 | all the usual editing facilities can be used to fix typos and such; | |
140 | in addition, \s-2JOVE\s0 has the following extra functions: | |
141 | .IP "^N" | |
142 | Insert the next filename from the argument list. | |
143 | .IP "^P" | |
144 | Insert the previous filename from the argument list. | |
145 | .IP "^R" | |
146 | Insert the full pathname of the file in the current buffer. | |
147 | .LP | |
148 | Sometimes you will see \fB--more--\fP on the message line. | |
149 | This happens when typeout from a command is too long to fit in the screen. | |
150 | It means that if you type a Space the next screenful of typeout will be | |
151 | printed. | |
152 | If you are not interested, | |
153 | typing anything but a Space will cause the rest of the output to be discarded. | |
154 | Typing C-G will discard the output and print \fIAborted\fP where the \fB--more--\fP was. | |
155 | Typing any other command will discard the rest of the output and | |
156 | also execute the command. | |
157 | .LP | |
158 | The message line and the list of filenames from the shell command that | |
159 | invoked \s-2JOVE\s0 are kept in a special buffer called | |
160 | \fIMinibuf\fP that can be edited like any other buffer. | |
161 | .NH 2 | |
162 | The Mode Line | |
163 | .XS \n(PN 5n | |
164 | \*(SN The Mode Line | |
165 | .XE | |
166 | .LP | |
167 | At the bottom of the screen, but above the message line, is the | |
168 | \fImode line\fP. The mode line format looks like this: | |
169 | .DS I | |
170 | \fBJOVE (major minor) Buffer: bufr "file" *\fP | |
171 | .DE | |
172 | \fImajor\fP is the name of the current \fImajor mode\fP. | |
173 | At any time, \s-2JOVE\s0 can be in only one major mode at a time. | |
174 | Currently there are only four major modes: \fIFundamental\fP, | |
175 | \fIText\fP, \fILisp\fP and \fIC\fP. | |
176 | .LP | |
177 | \fIminor\fP is a list of the minor modes that are turned on. | |
178 | \fBAbbrev\fP means that \fIWord Abbrev\fP mode is on; | |
179 | \fBAI\fP means that \fIAuto Indent\fP mode is on; | |
180 | \fBFill\fP means that \fIAuto Fill\fP mode is on; | |
181 | \fBOvrWt\fP means that \fIOver Write\fP mode is on. | |
182 | \fBDef\fP means that you are in the process of defining a keyboard macro. | |
183 | This is not really a mode, | |
184 | but it's useful to be reminded about it. | |
185 | The meanings of these modes are described later in this document. | |
186 | .LP | |
187 | \fIbufr\fP is the name of the currently selected \fIbuffer\fP. | |
188 | Each buffer has its own name and holds a file being edited; | |
189 | this is how \s-2JOVE\s0 can hold several files at once. | |
190 | But at any given time you are editing only one of them, | |
191 | the \fIselected\fP buffer. | |
192 | When we speak of what some command does to "the buffer", | |
193 | we are talking about the currently selected buffer. | |
194 | Multiple buffers makes it easy to switch around between several files, | |
195 | and then it is very useful that | |
196 | the mode line tells you which one you are editing at any time. (You | |
197 | will see later that it is possible to divide the | |
198 | screen into multiple \fIwindows\fP, each showing a different buffer. If you | |
199 | do this, there is a mode line beneath each window.) | |
200 | .LP | |
201 | \fIfile\fP is the name of the file that you are editing. | |
202 | This is the default filename for commands that expect a filename as input. | |
203 | .LP | |
204 | The asterisk at the end of the mode line means that there are changes in | |
205 | the buffer that have not been saved in the file. | |
206 | If the file has not been changed since it was read in or saved, | |
207 | there is no asterisk. | |
208 | .NH 1 | |
209 | Command Input Conventions | |
210 | .XS \n(PN | |
211 | \*(SN Command Input Conventions | |
212 | .XE | |
213 | .LP | |
214 | .NH 2 | |
215 | Notational Conventions for ASCII Characters | |
216 | .XS \n(PN 5n | |
217 | \*(SN Notational Conventions for ASCII Characters | |
218 | .XE | |
219 | .LP | |
220 | In this manual, | |
221 | "Control" characters | |
222 | (that is, characters that are typed with the Control key | |
223 | and some other key at the same time) | |
224 | are represented by "C-" followed by another character. | |
225 | Thus, | |
226 | C-A is the character you get when you type A with the Control key | |
227 | (sometimes labeled CTRL) down. | |
228 | Most control characters when present in the \s-2JOVE\s0 | |
229 | buffer are displayed with a caret; thus, ^A for C-A. | |
230 | Rubout (or DEL) is displayed as ^?, escape as ^[. | |
231 | .NH 2 | |
232 | Command and Filename Completion | |
233 | .XS \n(PN 5n | |
234 | \*(SN Command and Filename Completion | |
235 | .XE | |
236 | .LP | |
237 | When you are typing the name of a \s-2JOVE\s0 command, you need type only | |
238 | enough letters to make the name unambiguous. At any point in the course of | |
239 | typing the name, you can type question mark (?) to see a list of all the | |
240 | commands whose names begin with the characters you've already typed; you can | |
241 | type Space to have \s-2JOVE\s0 supply as many characters as it can; or you | |
242 | can type Return to complete the command if there is only one possibility. | |
243 | For example, if you have typed the letters "\fIau\fP" and you then type a | |
244 | question mark, you will see the list | |
245 | .DS I | |
246 | auto-execute-command | |
247 | auto-execute-macro | |
248 | auto-fill-mode | |
249 | auto-indent-mode | |
250 | .DE | |
251 | If you type a Return at this point, \s-2JOVE\s0 will complain by ringing | |
252 | the bell, because the letters you've typed do not unambiguously specify a | |
253 | single command. But if you type Space, \s-2JOVE\s0 will supply the | |
254 | characters "\fIto-\fP" because all commands that begin "\fIau\fP" also | |
255 | begin "\fIauto-\fP". You could then type the letter "\fIf\fP" followed | |
256 | by either Space or Return, and \s-2JOVE\s0 would complete the entire | |
257 | command. | |
258 | .LP | |
259 | Whenever \s-2JOVE\s0 is prompting you for a filename, | |
260 | say in the \fIfind-file\fP command, | |
261 | you also need only type enough of the name to make it unambiguous with | |
262 | respect to files that already exist. In this case, question mark and | |
263 | Space work just as they do in command completion, but Return always | |
264 | accepts the name just as you've typed it, because you might want to | |
265 | create a new file with a name similar to that of an existing file. | |
266 | .NH 1 | |
267 | Commands and Variables | |
268 | .XS \n(PN | |
269 | \*(SN Commands and Variables | |
270 | .XE | |
271 | .LP | |
272 | \s-2JOVE\s0 is composed of \fIcommands\fP | |
273 | which have long names such as | |
274 | \fInext-line\fP. | |
275 | Then \fIkeys\fP such as C-N are connected to | |
276 | commands through the \fIcommand dispatch table\fP. | |
277 | When we say that C-N moves the cursor down a line, | |
278 | we are glossing over a distinction which is unimportant for ordinary use, | |
279 | but essential for simple customization: | |
280 | it is the command \fInext-line\fP which knows how to move a down line, | |
281 | and C-N moves down a line because it is connected to that command. | |
282 | The name for this connection is a \fIbinding\fP; we say that the key | |
283 | C-N \fIis bound to\fP the command \fInext-line\fP. | |
284 | .LP | |
285 | Not all commands are bound to keys. To invoke a command that isn't bound | |
286 | to a key, you can type the sequence ESC X, which is bound to the command | |
287 | \fIexecute-named-command\fP. You will then be able to type the name of | |
288 | whatever command you want to execute on the message line. | |
289 | .LP | |
290 | Sometimes the description of a command will say | |
291 | "to change this, set the variable \fImumble\-foo\fP". | |
292 | A variable is a name used to remember a value. | |
293 | \s-2JOVE\s0 contains variables which are there so that you can change | |
294 | them if you want to customize. | |
295 | The variable's value is examined by some command, | |
296 | and changing that value makes the command behave differently. | |
297 | Until you are interesting in customizing \s-2JOVE\s0, | |
298 | you can ignore this information. | |
299 | .NH 2 | |
300 | Prefix Characters | |
301 | .XS \n(PN 5n | |
302 | \*(SN Prefix Characters | |
303 | .XE | |
304 | .LP | |
305 | Because there are more command names than keys, | |
306 | \s-2JOVE\s0 provides | |
307 | \fIprefix characters\fP to increase the number of commands that can | |
308 | be invoked quickly and easily. | |
309 | When you type a prefix character \s-2JOVE\s0 will wait | |
310 | for another character before deciding what to do. | |
311 | If you wait more than a second or so, | |
312 | \s-2JOVE\s0 will print the prefix character on the | |
313 | message line as a reminder and leave the cursor down there until you type your next | |
314 | character. | |
315 | There are two prefix characters built into \s-2JOVE\s0: | |
316 | Escape and Control-X. | |
317 | How the next character is interpreted depends on which | |
318 | prefix character you typed. | |
319 | For example, | |
320 | if you type Escape followed by B you'll run \fIbackward-word\fP, | |
321 | but if you type Control-X followed by B you'll run \fIselect-buffer\fP. | |
322 | Elsewhere in this manual, the Escape key is indicated as "ESC", which is | |
323 | also what \s-2JOVE\s0 displays on the message line for Escape. | |
324 | .NH 2 | |
325 | Help | |
326 | .XS \n(PN | |
327 | \*(SN Help | |
328 | .XE | |
329 | .LP | |
330 | To get a list of keys and their associated commands, | |
331 | you type ESC X \fIdescribe-bindings\fP. | |
332 | If you want to describe a single key, | |
333 | ESC X \fIdescribe-key\fP will work. A description of an | |
334 | individual command is available by using ESC X \fIdescribe-command\fP, | |
335 | and descriptions of variables by using ESC X \fIdescribe-variable\fP. | |
336 | If you can't remember the name of the thing you want to know about, | |
337 | ESC X \fIapropos\fP will tell you if a command or variable has a given | |
338 | string in its name. For example, ESC X \fIapropos describe\fP will | |
339 | list the names of the four describe commands mentioned briefly in this | |
340 | section. | |
341 | .NH 1 | |
342 | Basic Editing Commands | |
343 | .XS \n(PN | |
344 | \*(SN Basic Editing Commands | |
345 | .XE | |
346 | .LP | |
347 | .NH 2 | |
348 | Inserting Text | |
349 | .XS \n(PN 5n | |
350 | \*(SN Inserting Text | |
351 | .XE | |
352 | .LP | |
353 | To insert printing characters into the text you are editing, | |
354 | just type them. | |
355 | All printing characters you type are inserted into the text at | |
356 | the cursor (that is, at \fIpoint\fP), | |
357 | and the cursor moves forward. | |
358 | Any characters after the cursor move forward too. | |
359 | If the text in the buffer is FOOBAR, | |
360 | with the cursor before the B, | |
361 | then if you type XX, | |
362 | you get FOOXXBAR, | |
363 | with the cursor still before the B. | |
364 | .LP | |
365 | To correct text you have just inserted, | |
366 | you can use Rubout. | |
367 | Rubout deletes the character \fIbefore\fP the cursor (not the one that the | |
368 | cursor is on top of or under; that is the character \fIafter\fP the | |
369 | cursor). | |
370 | The cursor and all characters after it move backwards. | |
371 | Therefore, | |
372 | if you typing a printing character and then type Rubout, | |
373 | they cancel out. | |
374 | .LP | |
375 | To end a line and start typing a new one, | |
376 | type Return. | |
377 | Return operates by inserting a \fIline-separator\fP, | |
378 | so if you type Return in | |
379 | the middle of a line, | |
380 | you break the line in two. | |
381 | Because a line-separator is just a single character, | |
382 | you can type Rubout at the | |
383 | beginning of a line to delete the line-separator and join it with the | |
384 | preceding line. | |
385 | .LP | |
386 | As a special case, if you type Return at the end of a line and there are | |
387 | two or more empty lines just below it, \s-2JOVE\s0 does not insert a | |
388 | line-separator but instead merely moves to the next (empty) line. This | |
389 | behavior is convenient when you want to add several lines of text in the | |
390 | middle of a buffer. You can use the Control-O (\fInewline-and-backup\fP) | |
391 | command to "open" several empty lines at once; then you can insert the new | |
392 | text, filling up these empty lines. The advantage is that \s-2JOVE\s0 does | |
393 | not have to redraw the bottom part of the screen for each Return you type, | |
394 | as it would ordinarily. That "redisplay" can be both slow and distracting. | |
395 | .LP | |
396 | If you add too many characters to one line, | |
397 | without breaking it with Return, | |
398 | the line will grow too long to display on one screen line. | |
399 | When this happens, | |
400 | \s-2JOVE\s0 puts an "!" at the extreme right margin, | |
401 | and doesn't bother to display the rest of the line unless the | |
402 | cursor happens to be in it. | |
403 | The "!" is not part of your text; | |
404 | conversely, | |
405 | even though you can't see the rest of your line, | |
406 | it's still there, | |
407 | and if you break the line, | |
408 | the "!" will go away. | |
409 | .LP | |
410 | Direct insertion works for printing characters and space, | |
411 | but other | |
412 | characters act as editing commands and do not insert themselves. | |
413 | If you need to insert a control character, | |
414 | Escape, | |
415 | or Rubout, | |
416 | you must first \fIquote\fP it by typing the Control-Q command first. | |
417 | .NH 2 | |
418 | Moving the Cursor | |
419 | .XS \n(PN 5n | |
420 | \*(SN Moving the Cursor | |
421 | .XE | |
422 | .LP | |
423 | To do more than insert characters, | |
424 | you have to know how to move the cursor. | |
425 | Here are a few of the commands for doing that. | |
426 | .IP "C-A" 15n | |
427 | Move to the beginning of the line. | |
428 | .IP "C-E" 15n | |
429 | Move to the end of the line. | |
430 | .IP "C-F" 15n | |
431 | Move forward over one character. | |
432 | .IP "C-B" 15n | |
433 | Move backward over one character. | |
434 | .IP "C-N" 15n | |
435 | Move down one line, | |
436 | vertically. | |
437 | If you start in the middle of one line, | |
438 | you end in the middle of the next. | |
439 | .IP "C-P" 15n | |
440 | Move up one line, | |
441 | vertically. | |
442 | .IP "ESC <" 15n | |
443 | Move to the beginning of the entire buffer. | |
444 | .IP "ESC >" 15n | |
445 | Move to the end of the entire buffer. | |
446 | .IP "ESC ," 15n | |
447 | Move to the beginning of the visible window. | |
448 | .IP "ESC ." 15n | |
449 | Move to the end of the visible window. | |
450 | .NH 2 | |
451 | Erasing Text | |
452 | .XS \n(PN 5n | |
453 | \*(SN Erasing Text | |
454 | .XE | |
455 | .LP | |
456 | .IP "Rubout" 15n | |
457 | Delete the character before the cursor. | |
458 | .IP "C-D" 15n | |
459 | Delete the character after the cursor. | |
460 | .IP "C-K" 15n | |
461 | Kill to the end of the line. | |
462 | .LP | |
463 | You already know about the Rubout command which deletes the character | |
464 | before the cursor. | |
465 | Another command, | |
466 | Control-D, | |
467 | deletes the character | |
468 | after the cursor, | |
469 | causing the rest of the text on the line to shift left. | |
470 | If Control-D is typed at the end of a line, | |
471 | that line and the next line are joined together. | |
472 | .LP | |
473 | To erase a larger amount of text, | |
474 | use the Control-K command, | |
475 | which kills a line at a time. | |
476 | If Control-K is done at the beginning or | |
477 | middle of a line, | |
478 | it kills all the text up to the end of the line. | |
479 | If Control-K is done at the end of a line, | |
480 | it joins that line and the next line. | |
481 | If Control-K is done twice, it kills the rest of the line and the line | |
482 | separator also. | |
483 | .NH 2 | |
484 | Files \(em Saving Your Work | |
485 | .XS \n(PN 5n | |
486 | \*(SN Files \(em Saving Your Work | |
487 | .XE | |
488 | .LP | |
489 | The commands above are sufficient for creating text in the \s-2JOVE\s0 buffer. | |
490 | The more advanced \s-2JOVE\s0 commands just make things easier. | |
491 | But to keep any text permanently you must put it in a \fIfile\fP. | |
492 | Files are the objects which | |
493 | .UX | |
494 | uses for storing data for a length of time. | |
495 | To tell \s-2JOVE\s0 to read text into a file, | |
496 | choose a filename, | |
497 | such as \fIfoo.bar\fP, | |
498 | and type C-X C-R \fIfoo.bar\fP<return>. | |
499 | This reads the file \fIfoo.bar\fP so that its contents appear on the screen | |
500 | for editing. | |
501 | You can make changes, | |
502 | and then save the file by typing C-X C-S (save-file). | |
503 | This makes the changes permanent and actually changes the file \fIfoo.bar\fP. | |
504 | Until then, | |
505 | the changes are only inside \s-2JOVE\s0, | |
506 | and the file \fIfoo.bar\fP is not really changed. | |
507 | If the file \fIfoo.bar\fP doesn't exist, | |
508 | and you want to create it, | |
509 | read it as if it did exist. | |
510 | When you save your text with C-X C-S the file will be created. | |
511 | .NH 2 | |
512 | Exiting and Pausing \(em Leaving \s-2JOVE\s0 | |
513 | .XS \n(PN 5n | |
514 | \*(SN Exiting and Pausing \(em Leaving \s-2JOVE\s0 | |
515 | .XE | |
516 | .LP | |
517 | The command C-X C-C (\fIexit-jove\fP) will terminate the \s-2JOVE\s0 | |
518 | session and return to the shell. If there are modified but | |
519 | unsaved buffers, \s-2JOVE\s0 will ask you for confirmation, and you | |
520 | can abort the command, look at what buffers are | |
521 | modified but unsaved using C-X C-B (\fIlist-buffers\fP), save the | |
522 | valuable ones, and then exit. If what you want to do, on the other hand, | |
523 | is \fIpreserve\fP the editing session but return to the shell temporarily | |
524 | you can (under Berkeley | |
525 | .UX | |
526 | only) issue the command ESC S (\fIpause-jove\fP), do your | |
527 | .UX | |
528 | work within the c-shell, then return to \s-2JOVE\s0 using the | |
529 | \fIfg\fP command to resume editing at the point where you paused. | |
530 | For this sort of situation you might consider using an \fIinteractive | |
531 | shell\fP (that is, a shell in a \s-2JOVE\s0 window) which lets you use | |
532 | editor commands to manipulate your | |
533 | .UX | |
534 | commands (and their output) while never leaving the editor. | |
535 | (The interactive shell feature is described below.) | |
536 | .NH 2 | |
537 | Giving Numeric Arguments to \s-2JOVE\s0 Commands | |
538 | .XS \n(PN 5n | |
539 | \*(SN Giving Numeric Arguments to \s-2JOVE\s0 Commands | |
540 | .XE | |
541 | .LP | |
542 | Any \s-2JOVE\s0 command can be given a \fInumeric argument\fP. | |
543 | Some commands interpret the argument as a repetition count. | |
544 | For example, | |
545 | giving an argument of ten to the C-F command (forward-character) moves forward | |
546 | ten characters. | |
547 | With these commands, | |
548 | no argument is equivalent to an argument of 1. | |
549 | .LP | |
550 | Some commands use the value of the argument, | |
551 | but do something peculiar (or nothing) when there is no argument. | |
552 | For example, | |
553 | ESC G (\fIgoto-line\fP) with an argument \fBn\fP | |
554 | goes to the beginning of the \fBn\fP'th line. | |
555 | But ESC G with no argument doesn't do anything. | |
556 | Similarly, C-K with an argument kills that many lines, including their line | |
557 | separators. Without an argument, C-K when there is text on the line to the | |
558 | right of | |
559 | the cursor kills that text; when there is no text after the cursor, C-K | |
560 | deletes the line separator. | |
561 | .LP | |
562 | The fundamental way of specifying an argument is to use ESC followed | |
563 | by the digits of the argument, for example, ESC 123 ESC G to go to line | |
564 | 123. Negative arguments are allowed, | |
565 | although not all of the commands know what to do with one. | |
566 | .LP | |
567 | Typing C-U means do the next command four times. | |
568 | Two such C-U's multiply the next command by sixteen. | |
569 | Thus, | |
570 | C-U C-U C-F moves forward sixteen characters. | |
571 | This is a good way to move forward quickly, | |
572 | since it moves about 1/4 of a line on most terminals. | |
573 | Other useful combinations are: | |
574 | C-U C-U C-N (move down a good fraction of the screen), | |
575 | C-U C-U C-O (make "a lot" of blank lines), | |
576 | and C-U C-K (kill four lines \(em note that typing C-K four times | |
577 | would kill 2 lines). | |
578 | .LP | |
579 | There are other, | |
580 | terminal-dependent ways of specifying arguments. | |
581 | They have the same effect but may be easier to type. | |
582 | If your terminal | |
583 | has a numeric keypad which sends something recognizably different from | |
584 | the ordinary digits, | |
585 | it is possible to program \s-2JOVE\s0 to to allow use of | |
586 | the numeric keypad for specifying arguments. | |
587 | .NH 2 | |
588 | The Mark and the Region | |
589 | .XS \n(PN 5n | |
590 | \*(SN The Mark and the Region | |
591 | .XE | |
592 | .LP | |
593 | In general, | |
594 | a command that processes an arbitrary part of the buffer | |
595 | must know where to start and where to stop. | |
596 | In \s-2JOVE\s0, | |
597 | such commands usually operate on the text between point and \fIthe mark\fP. | |
598 | This body of text is called \fIthe region\fP. | |
599 | To specify a region, | |
600 | you set point to one end of it and mark at the other. | |
601 | It doesn't matter which one comes earlier in the text. | |
602 | .IP "C-@" 15n | |
603 | Set the mark where point is. | |
604 | .IP "C-X C-X" 15n | |
605 | Interchange mark and point. | |
606 | .LP | |
607 | For example, | |
608 | if you wish to convert part of the buffer to all upper-case, | |
609 | you can use the C-X C-U command, | |
610 | which operates on the text in the region. | |
611 | You can first go to the beginning of the text to be capitalized, | |
612 | put the mark there, move to the end, and then type C-X C-U. | |
613 | Or, | |
614 | you can set the mark at the end of the text, | |
615 | move to the beginning, | |
616 | and then type C-X C-U. | |
617 | C-X C-U runs the command \fIcase-region-upper\fP, | |
618 | whose name signifies that the region, | |
619 | or everything between point and mark, | |
620 | is to be capitalized. | |
621 | .LP | |
622 | The way to set the mark is with the C-@ command or (on some | |
623 | terminals) the C-Space command. | |
624 | They set the mark where point is. | |
625 | Then you can move point away, | |
626 | leaving mark behind. When the mark is set, "[Point pushed]" is printed on | |
627 | the message line. | |
628 | .LP | |
629 | Since terminals have only one cursor, | |
630 | there is no way for \s-2JOVE\s0 to show you where the mark is located. | |
631 | You have to remember. | |
632 | The usual solution to this problem is to set the mark and then use it soon, | |
633 | before you forget where it is. | |
634 | But you can see where the mark is with | |
635 | the command C-X C-X which puts the mark where point was and point | |
636 | where mark was. | |
637 | The extent of the region is unchanged, | |
638 | but the cursor and point are now at the previous location of the mark. | |
639 | .NH 2 | |
640 | The Ring of Marks | |
641 | .XS \n(PN 5n | |
642 | \*(SN The Ring of Marks | |
643 | .XE | |
644 | .LP | |
645 | Aside from delimiting the region, | |
646 | the mark is also useful for remembering a spot that you may want to go back to. | |
647 | To make this feature more useful, | |
648 | \s-2JOVE\s0 remembers 16 previous locations of the mark. | |
649 | Most commands that set the mark push the old mark onto this stack. | |
650 | To return to a marked location, use C-U C-@. | |
651 | This moves point to where the mark was, | |
652 | and restores the mark from the stack of former marks. | |
653 | So repeated use of this command moves point to all of the old | |
654 | marks on the stack, | |
655 | one by one. | |
656 | Since the stack is actually a ring, | |
657 | enough uses of C-U C-@ bring point back to where it was originally. | |
658 | .LP | |
659 | Some commands whose primary purpose is to move point a great distance | |
660 | take advantage of the stack of marks to give you a way to undo the | |
661 | command. | |
662 | The best example is ESC <, | |
663 | which moves to the beginning of the buffer. | |
664 | If there are more than 22 lines between the beginning of | |
665 | the buffer and point, | |
666 | ESC < sets the mark first, | |
667 | so that you can use C-U C-@ or C-X C-X to go back to where you were. | |
668 | You can change the number of lines from 22 since it is kept in the variable \fImark-threshold\fP. | |
669 | By setting it to 0, | |
670 | you can make these commands always set the mark. | |
671 | By setting it to a very large number you can prevent these commands from ever | |
672 | setting the mark. | |
673 | If a command decides to set the mark, | |
674 | it prints the message \fI[Point pushed]\fP. | |
675 | .NH 2 | |
676 | Killing and Moving Text | |
677 | .XS \n(PN 5n | |
678 | \*(SN Killing and Moving Text | |
679 | .XE | |
680 | .LP | |
681 | The most common way of moving or copying text with \s-2JOVE\s0 is to kill it, | |
682 | and get it back again in one or more places. | |
683 | This is very safe | |
684 | because the last several pieces of killed text are all remembered, | |
685 | and it is versatile, | |
686 | because the many commands for killing syntactic units | |
687 | can also be used for moving those units. | |
688 | There are also other ways of moving text for special purposes. | |
689 | .NH 2 | |
690 | Deletion and Killing | |
691 | .XS \n(PN 5n | |
692 | \*(SN Deletion and Killing | |
693 | .XE | |
694 | .LP | |
695 | Most commands which erase text from the buffer save it so that you can | |
696 | get it back if you change your mind, | |
697 | or move or copy it to other parts of the buffer. | |
698 | These commands are known as \fIkill\fP commands. | |
699 | The rest of the commands that erase text do not save it; | |
700 | they are known as \fIdelete\fP commands. | |
701 | The delete commands include C-D and Rubout, | |
702 | which delete only one character at a time, | |
703 | and those commands that delete only spaces or line separators. | |
704 | Commands that can destroy significant amounts of nontrivial data generally kill. | |
705 | A command's | |
706 | name and description will use the words \fIkill\fP or \fIdelete\fP to | |
707 | say which one it does. | |
708 | .IP "C-D" 20n | |
709 | Delete next character. | |
710 | .IP "Rubout" 20n | |
711 | Delete previous character. | |
712 | .IP "ESC \\\\\\\\" 20n | |
713 | Delete spaces and tabs around point. | |
714 | .IP "C-X C-O" 20n | |
715 | Delete blank lines around the current line. | |
716 | .IP "C-K" 20n | |
717 | Kill rest of line or one or more lines. | |
718 | .IP "C-W" 20n | |
719 | Kill region (from point to the mark). | |
720 | .IP "ESC D" 20n | |
721 | Kill word. | |
722 | .IP "ESC Rubout" 20n | |
723 | Kill word backwards. | |
724 | .IP "ESC K" 20n | |
725 | Kill to end of sentence. | |
726 | .IP "C-X Rubout" 20n | |
727 | Kill to beginning of sentence. | |
728 | .NH 2 | |
729 | Deletion | |
730 | .XS \n(PN 5n | |
731 | \*(SN Deletion | |
732 | .XE | |
733 | .LP | |
734 | The most basic delete commands are C-D and Rubout. | |
735 | C-D deletes the character after the cursor, | |
736 | the one the cursor is "on top of" or "underneath". | |
737 | The cursor doesn't move. | |
738 | Rubout deletes the character before the cursor, | |
739 | and moves the cursor back. | |
740 | Line separators act like normal characters when deleted. | |
741 | Actually, | |
742 | C-D and Rubout aren't always \fIdelete\fP commands; | |
743 | if you give an argument, | |
744 | they \fIkill\fP instead. | |
745 | This prevents you from losing a great deal of text by typing a large | |
746 | argument to a C-D or Rubout. | |
747 | .LP | |
748 | The other delete commands are those which delete only formatting | |
749 | characters: | |
750 | spaces, | |
751 | tabs, | |
752 | and line separators. | |
753 | ESC \\ (\fIdelete-white-space\fP) | |
754 | deletes all the spaces and tab characters before and after point. | |
755 | C-X C-O (\fIdelete-blank-lines\fP) deletes all blank lines after the current line, | |
756 | and if the current line is blank deletes all the blank | |
757 | lines preceding the current line as well | |
758 | (leaving one blank line, the current line). | |
759 | .NH 2 | |
760 | Killing by Lines | |
761 | .XS \n(PN 5n | |
762 | \*(SN Killing by Lines | |
763 | .XE | |
764 | .LP | |
765 | The simplest kill command is the C-K command. | |
766 | If issued at the beginning of a line, | |
767 | it kills all the text on the line, | |
768 | leaving it blank. | |
769 | If given on a line containing only white space (blanks and tabs) | |
770 | the line disappears. | |
771 | As a consequence, | |
772 | if you go to the front of a non-blank line and type two C-K's, | |
773 | the line disappears completely. | |
774 | .LP | |
775 | More generally, | |
776 | C-K kills from point up to the end of the line, | |
777 | unless it is at the end of a line. | |
778 | In that case, | |
779 | it kills the line separator following the line, | |
780 | thus merging the next line into the current one. | |
781 | Invisible spaces and tabs at the end of the line are ignored when | |
782 | deciding which case applies, | |
783 | so if point appears to be at the end of the line, | |
784 | you can be sure the line separator will be killed. | |
785 | .LP | |
786 | C-K with an argument of zero kills all the text before | |
787 | point on the current line. | |
788 | .NH 2 | |
789 | Other Kill Commands | |
790 | .XS \n(PN 5n | |
791 | \*(SN Other Kill Commands | |
792 | .XE | |
793 | .LP | |
794 | A kill command which is very general is C-W (\fIkill-region\fP), | |
795 | which kills everything between point and the mark.* | |
796 | .FS | |
797 | *Often users switch this binding from C-W to C-X C-K because it is too | |
798 | easy to hit C-W accidentally. | |
799 | .FE | |
800 | With this command, | |
801 | you can kill and save contiguous characters, | |
802 | if you first set the mark at one end of them and go to the other end. | |
803 | .LP | |
804 | Other syntactic units can be killed, too; | |
805 | words, | |
806 | with ESC Rubout and ESC D; | |
807 | and, sentences, | |
808 | with ESC K and C-X Rubout. | |
809 | .NH 2 | |
810 | Un-killing | |
811 | .XS \n(PN 5n | |
812 | \*(SN Un-killing (Yanking) | |
813 | .XE | |
814 | .LP | |
815 | Un-killing (yanking) is getting back text which was killed. | |
816 | The usual way to | |
817 | move or copy text is to kill it and then un-kill it one or more times. | |
818 | .IP "C-Y" 10n | |
819 | Yank (re-insert) last killed text. | |
820 | .IP "ESC Y" 10n | |
821 | Replace re-inserted killed text with the previously killed text. | |
822 | .IP "ESC W" 10n | |
823 | Save region as last killed text without killing. | |
824 | .LP | |
825 | Killed text is pushed onto a \fIring buffer\fP called the \fIkill | |
826 | ring\fP that remembers the last 10 blocks of text that were killed. | |
827 | (Why it is called a ring buffer will be explained below). | |
828 | The command C-Y (\fIyank\fP) reinserts the text of the most recent kill. | |
829 | It leaves the cursor at the end of the text, | |
830 | and puts the mark at the beginning. | |
831 | Thus, | |
832 | a single C-Y undoes the C-W. | |
833 | .LP | |
834 | If you wish to copy a block of text, | |
835 | you might want to use ESC W (\fIcopy-region\fP), | |
836 | which copies the region into the kill ring without removing it from the buffer. | |
837 | This is approximately equivalent to C-W followed by C-Y, | |
838 | except that ESC W does not mark the buffer as | |
839 | "changed" and does not cause the screen to be rewritten. | |
840 | .LP | |
841 | There is only one kill ring shared among all the buffers. | |
842 | After visiting a new file, | |
843 | whatever was last killed in the previous file is still on top of the kill ring. | |
844 | This is important for moving text between files. | |
845 | .NH 2 | |
846 | Appending Kills | |
847 | .XS \n(PN 5n | |
848 | \*(SN Appending Kills | |
849 | .XE | |
850 | .LP | |
851 | Normally, | |
852 | each kill command pushes a new block onto the kill ring. | |
853 | However, | |
854 | two or more kill commands immediately in a row (without any other | |
855 | intervening commands) combine their text into a | |
856 | single entry on the ring, | |
857 | so that a single C-Y command gets it all back as it was before it was killed. | |
858 | This means that you don't have to kill all the text in one command; | |
859 | you can keep killing line after line, | |
860 | or word after word, | |
861 | until you have killed it all, | |
862 | and you can still get it all back at once. | |
863 | .LP | |
864 | Commands that kill forward from | |
865 | .I point | |
866 | add onto the end of the previous | |
867 | killed text. | |
868 | Commands that kill backward from | |
869 | .I point | |
870 | add onto the beginning. | |
871 | This way, | |
872 | any sequence of mixed forward and backward kill | |
873 | commands puts all the killed text into one entry without needing rearrangement. | |
874 | .NH 2 | |
875 | Un-killing Earlier Kills | |
876 | .XS \n(PN 5n | |
877 | \*(SN Un-killing Earlier Kills | |
878 | .XE | |
879 | .LP | |
880 | To recover killed text that is no longer the most recent kill, | |
881 | you need the ESC Y (\fIyank-pop\fP) command. | |
882 | The ESC Y command can be used | |
883 | only after a C-Y (yank) command or another ESC Y. | |
884 | It takes the un-killed | |
885 | text inserted by the C-Y and replaces it with the text from an earlier | |
886 | kill. | |
887 | So, | |
888 | to recover the text of the next-to-the-last kill, | |
889 | you first use C-Y to recover the last kill, | |
890 | and then discard it by use of ESC Y to move back to the previous kill. | |
891 | .LP | |
892 | You can think of all the last few kills as living on a ring. | |
893 | After a C-Y command, | |
894 | the text at the front of the ring is also present in the buffer. | |
895 | ESC Y "rotates" the ring bringing the previous string of text to the front | |
896 | and this text replaces the other text in the buffer as well. | |
897 | Enough ESC Y commands can rotate any part of the ring to the front, | |
898 | so you can get at any killed text so long as it is recent enough | |
899 | to be still in the ring. | |
900 | Eventually the ring rotates all the way | |
901 | around and the most recently killed text comes to the front | |
902 | (and into the buffer) again. | |
903 | ESC Y with a negative argument rotates the ring backwards. | |
904 | .LP | |
905 | When the text you are looking for is brought into the buffer, | |
906 | you can stop doing ESC Y's and the text will stay there. | |
907 | It's really just a copy of what's at the front of the ring, | |
908 | so editing it does not change what's in the ring. | |
909 | And the ring, | |
910 | once rotated, | |
911 | stays rotated, | |
912 | so that doing another C-Y gets another copy of what you rotated to the | |
913 | front with ESC Y. | |
914 | .LP | |
915 | If you change your | |
916 | mind about un-killing, | |
917 | C-W gets rid of the un-killed text, even | |
918 | after any number of ESC Y's. | |
919 | .NH 1 | |
920 | Searching | |
921 | .XS \n(PN | |
922 | \*(SN Searching | |
923 | .XE | |
924 | .LP | |
925 | The search commands are useful for finding and moving to arbitrary | |
926 | positions in the buffer in one swift motion. | |
927 | For example, | |
928 | if you just ran the spell program on a paper | |
929 | and you want to correct some word, | |
930 | you can use the search commands to move directly to that word. There are | |
931 | two flavors of search: \fIstring search\fP and \fIincremental search\fP. | |
932 | The former is the default flavor\(emif you want to use incremental search | |
933 | you must rearrange the key bindings (see below). | |
934 | .NH 2 | |
935 | Conventional Search | |
936 | .XS \n(PN 5n | |
937 | \*(SN Conventional Search | |
938 | .XE | |
939 | .LP | |
940 | .IP "C-S" 15n | |
941 | Search forward. | |
942 | .IP "C-R" 15n | |
943 | Search backward. | |
944 | .LP | |
945 | To search for the string "FOO" you type "C-S FOO<return>". | |
946 | If \s-2JOVE\s0 finds | |
947 | FOO it moves point to the end of it; otherwise \s-2JOVE\s0 prints an error | |
948 | message and leaves point unchanged. | |
949 | C-S searches forward from point | |
950 | so only occurrences of FOO after point are found. | |
951 | To search in the other direction use C-R. | |
952 | It is exactly the same as C-S except it searches in the opposite direction, | |
953 | and if it finds the string, | |
954 | it leaves point at the beginning of it, | |
955 | not at the end as in C-S. | |
956 | .LP | |
957 | While \s-2JOVE\s0 is searching it prints the search string on the message line. | |
958 | This is so you know what \s-2JOVE\s0 is doing. | |
959 | When the system is heavily loaded and | |
960 | editing in exceptionally large buffers, | |
961 | searches can take several (sometimes many) seconds. | |
962 | .LP | |
963 | \s-2JOVE\s0 remembers the last search string you used, | |
964 | so if you want to search for the same string you can type "C-S <return>". | |
965 | If you mistyped the last search string, | |
966 | you can type C-S followed by C-R. | |
967 | C-R, | |
968 | as usual, | |
969 | inserts the default search string into the minibuffer, | |
970 | and then you can fix it up. | |
971 | .NH 2 | |
972 | Incremental Search | |
973 | .XS \n(PN 5n | |
974 | \*(SN Incremental Search | |
975 | .XE | |
976 | .LP | |
977 | This search command is unusual in that is is \fIincremental\fP; | |
978 | it begins to search before you have typed the complete search string. | |
979 | As you type in the search string, | |
980 | \s-2JOVE\s0 shows you where it would be found. | |
981 | When you have typed enough characters to identify the place you want, | |
982 | you can stop. | |
983 | Depending on what you will do next, | |
984 | you may or may not need to terminate the search explicitly with a Return first. | |
985 | .LP | |
986 | The command to search is C-S (\fIi-search-forward\fP). | |
987 | C-S reads in characters and positions the cursor at the first | |
988 | occurrence of the characters that you have typed so far. | |
989 | If you type C-S and then F, | |
990 | the cursor moves in the text just after the next "F". | |
991 | Type an "O", | |
992 | and see the cursor move to after the next "FO". | |
993 | After another "O", | |
994 | the cursor is after the next "FOO". | |
995 | At the same time, | |
996 | the "FOO" has echoed on the message line. | |
997 | .LP | |
998 | If you type a mistaken character, | |
999 | you can rub it out. | |
1000 | After the FOO, | |
1001 | typing a Rubout makes the "O" disappear from the message line, | |
1002 | leaving only "FO". | |
1003 | The cursor moves back in the buffer to the "FO". | |
1004 | Rubbing out the "O" and "F" moves the cursor back to where you | |
1005 | started the search. | |
1006 | .LP | |
1007 | When you are satisfied with the place you have reached, | |
1008 | you can type a Return, | |
1009 | which stops searching, | |
1010 | leaving the cursor where the search brought it. | |
1011 | Also, | |
1012 | any command not specially meaningful in searches stops | |
1013 | the searching and is then executed. | |
1014 | Thus, | |
1015 | typing C-A would exit the search and then move to the beginning of the line. | |
1016 | Return is necessary only if the next character you want to type is a printing | |
1017 | character, | |
1018 | Rubout, | |
1019 | Return, | |
1020 | or another search command, | |
1021 | since those are the characters that have special meanings inside the search. | |
1022 | .LP | |
1023 | Sometimes you search for "FOO" and find it, | |
1024 | but not the one you hoped to find. | |
1025 | Perhaps there is a second FOO that you forgot about, | |
1026 | after the one you just found. | |
1027 | Then type another C-S and the cursor will find the next FOO. | |
1028 | This can be done any number of times. | |
1029 | If you overshoot, | |
1030 | you can return to previous finds by rubbing out the C-S's. | |
1031 | .LP | |
1032 | After you exit a search, | |
1033 | you can search for the same string again by typing just C-S C-S: | |
1034 | one C-S command to start the search and then | |
1035 | another C-S to mean "search again for the same string". | |
1036 | .LP | |
1037 | If your string is not found at all, | |
1038 | the message line says "Failing I-search". | |
1039 | The cursor is after the place where \s-2JOVE\s0 found as much of | |
1040 | your string as it could. | |
1041 | Thus, | |
1042 | if you search for FOOT and there is no FOOT, | |
1043 | you might see the cursor after the FOO in FOOL. | |
1044 | At this point there are several things you can do. | |
1045 | If your string was mistyped, | |
1046 | you can rub some of it out and correct it. | |
1047 | If you like the place you have found, | |
1048 | you can type Return or some other \s-2JOVE\s0 command | |
1049 | to "accept what the search offered". | |
1050 | Or you can type C-G, | |
1051 | which undoes the search altogether and positions you back where you started | |
1052 | the search. | |
1053 | .LP | |
1054 | You can also type C-R at any time to start searching backwards. | |
1055 | If a search fails because the place you started was too late in the file, | |
1056 | you should do this. | |
1057 | Repeated C-R's keep looking backward for more occurrences of the last search string. | |
1058 | A C-S starts going forward again. | |
1059 | C-R's can be rubbed out just like anything else. | |
1060 | .NH 2 | |
1061 | Searching with Regular Expressions | |
1062 | .XS \n(PN 5n | |
1063 | \*(SN Searching with Regular Expressions | |
1064 | .XE | |
1065 | .LP | |
1066 | In addition to the searching facilities described above, | |
1067 | \s-2JOVE\s0 | |
1068 | can search for patterns using regular expressions. | |
1069 | The handling of regular expressions in \s-2JOVE\s0 is like that of \fIed(1)\fP | |
1070 | or \fIvi(1)\fP, but with some notable additions. | |
1071 | The extra metacharacters understood by \s-2JOVE\s0 are \e<, | |
1072 | \e>, | |
1073 | \e\|| and \e\|{. | |
1074 | The first two of these match the beginnings and endings of words; | |
1075 | Thus the search pattern, | |
1076 | "\|\e<Exec" would match all words beginning with the letters "Exec". | |
1077 | .LP | |
1078 | An \e\|| signals the beginning of an alternative \(em that is, the | |
1079 | pattern "foo\e\||bar" would match either "foo" or "bar". The "curly | |
1080 | brace" is a way of introducing several sub-alternatives into a pattern. | |
1081 | It parallels the [] construct of regular expressions, except it specifies | |
1082 | a list of alternative words instead of just alternative characters. So | |
1083 | the pattern "foo\e\|{bar,baz\e\|}bie" matches "foobarbie" or "foobazbie". | |
1084 | .LP | |
1085 | \s-2JOVE\s0 only regards metacharacters as special if the variable | |
1086 | \fImatch-regular-expressions\fP is set to "on". | |
1087 | The ability to have \s-2JOVE\s0 ignore these characters is useful if | |
1088 | you're editing a document about patterns and regular expressions or | |
1089 | when a novice is learning \s-2JOVE\s0. | |
1090 | .LP | |
1091 | Another variable that affects searching is \fIcase-ignore-search\fP. If | |
1092 | this variable is set to "on" then upper case and lower case letters are | |
1093 | considered equal. | |
1094 | .NH 1 | |
1095 | Replacement Commands | |
1096 | .XS \n(PN | |
1097 | \*(SN Replacement Commands | |
1098 | .XE | |
1099 | .LP | |
1100 | Global search-and-replace operations are not needed as often in \s-2JOVE\s0 | |
1101 | as they are in other editors, | |
1102 | but they are available. | |
1103 | In addition to | |
1104 | the simple Replace operation which is like that found in most editors, | |
1105 | there is a Query Replace operation which asks, | |
1106 | for each occurrence of the pattern, | |
1107 | whether to replace it. | |
1108 | .NH 2 | |
1109 | Global replacement | |
1110 | .XS \n(PN 5n | |
1111 | \*(SN Global Replacement | |
1112 | .XE | |
1113 | .LP | |
1114 | To replace every occurrence of FOO after point with BAR, | |
1115 | you can do, e.g., "ESC R FOO<return>BAR" as the \fIreplace-string\fP command | |
1116 | is bound to the ESC R. | |
1117 | Replacement takes place only between point and the end of the buffer | |
1118 | so if you want to cover the whole buffer you must go to the beginning first. | |
1119 | .NH 2 | |
1120 | Query Replace | |
1121 | .XS \n(PN 5n | |
1122 | \*(SN Query Replace | |
1123 | .XE | |
1124 | .LP | |
1125 | If you want to change only some of the occurrences of FOO, | |
1126 | not all, | |
1127 | then the global \fIreplace-string\fP is inappropriate; | |
1128 | Instead, | |
1129 | use, e.g., "ESC Q FOO<return>BAR", to run the command \fIquery-replace-string\fP. | |
1130 | This displays each occurrence of FOO and waits for you to say whether | |
1131 | to replace it with a BAR. | |
1132 | The things you can type when you are shown an occurrence of FOO are: | |
1133 | .IP "Space" 15n | |
1134 | to replace the FOO. | |
1135 | .IP "Rubout" 15n | |
1136 | to skip to the next FOO without replacing this one. | |
1137 | .IP "Return" 15n | |
1138 | to stop without doing any more replacements. | |
1139 | .IP "Period" 15n | |
1140 | to replace this FOO and then stop. | |
1141 | .IP "! or P" 15n | |
1142 | to replace all remaining FOO's without asking. | |
1143 | .IP "C-R or R" 15n | |
1144 | to enter a recursive editing level, | |
1145 | in case the FOO needs to be edited rather than just replaced with a BAR. | |
1146 | When you are done, | |
1147 | exit the recursive editing level with C-X C-C and the next FOO will | |
1148 | be displayed. | |
1149 | .IP "C-W" 15n | |
1150 | to delete the FOO, and then start editing the buffer. | |
1151 | When you are finished editing whatever is to replace the FOO, | |
1152 | exit the recursive editing level with C-X C-C | |
1153 | and the next FOO will be displayed. | |
1154 | .IP "U" 15n | |
1155 | move to the last replacement and undo it. | |
1156 | .LP | |
1157 | Another alternative is using \fIreplace-in-region\fP which is just like | |
1158 | \fIreplace-string\fP except it searches only within the region. | |
1159 | .LP |