|
|
1.1 root 1: .\" @(#)jove.1 6.1 (Berkeley) 5/30/86
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.