|
|
1.1 root 1: .de eg
2: .ti .5i
3: .sp 1
4: .bo \\$1
5: .sp 1
6: ..
7: .de ks
8: .sp
9: .ta .5i \\$1
10: .in \\$1
11: ..
12: .de dk \" Describe Key
13: .ti 0
14: \t\\$1\t\c \" Flow into the paragraph
15: ..
16: .de ke \" Key list End
17: .in 0
18: ..
19: .nr si 3n
20: .st 2
21: .m1 3
22: .m4 0
23: .he '%''JOVE Manual for UNIX Users'
24: .bs "Introduction"
25: JOVE
26: .fb
27: JOVE stands for Jonathan's Own Version of Emacs.
28: .fe
29: is an advanced, self-documenting, customizable real-time display
30: editor. It is based on the original EMACS editor written at M.I.T.
31: by Richard Stallman.
32: .fb
33: Although JOVE is meant to be compatible with
34: EMACS, and indeed many of the basic commands are very similar, there
35: are some major differences between the two editors, and you should not
36: rely on their behaving identically.
37: .fe
38: .lp
39: We say that JOVE is a display editor because normally the text being
40: edited is visible on the screen and is updated automatically as you
41: type your commands.
42: .lp
43: We call it a real-time editor because the display is updated very
44: frequently, usually after each character or pair of characters you
45: type. This minimizes the amount of information you must keep in your
46: head as you edit.
47: .lp
48: We call JOVE advanced because it provides facilities that go beyond
49: simple insertion and deletion: filling of text; automatic indentations
50: of programs; view more than one file at once; and dealing in terms of
51: characters, words, lines, sentences and paragraphs. It is much easier
52: to type one command meaning "go to the end of the paragraph" than to
53: find the desired spot with repetition of simpler commands.
54: .lp
55: Self-documenting means that at almost any time you can type a key to
56: find out what a command does, or to find all the commands that pertain
57: to a topic.
58: .lp
59: Customizable means that you can change the definition of JOVE commands
60: in little ways. For example, you can rearrange the command set; if
61: you prefer to use arrow keys for the four basic cursor motion commands
62: (up, down, left and right), you can. Another sort of customization is
63: writing new commands by combining built in commands.
64: .es
65: .bs "The Organization of the Screen"
66: JOVE divides the screen up into several sections. The biggest of
67: these sections is used to display the text you
68: are editing. The terminal's cursor shows the position of \fIpoint\fR,
69: the location at which editing takes place. While the cursor appears
70: to point \fIat\fR a character, point should be thought of as between
71: characters; it points \fIbefore\fR the character that the cursor
72: appears on top of. Terminals have only one cursor, and when output is
73: in progress it must appear where the typing is being done. This
74: doesn't mean that point is moving; it is only that JOVE has no way of
75: showing you the location of point except when the terminal is idle.
76: .lp
77: The lines of the screen are usually available for displaying text but
78: sometimes are pre-empted by typeout from certain commands (such as, a
79: listing of all the editor functions). Most of the time, output from
80: commands like these is only desired for a short period of time,
81: usually just long enough to glance at it. When you have finished
82: looking at the output, you can type Space to make your text reappear.
83: (Usually typing a Space inserts itself, but when there is typeout on
84: the screen, it does nothing but get rid of that.) Any other command
85: executes normally, \fIafter\fR redrawing your text.
86: .bs "The Message Line"
87: The bottom line on the screen, called the \fImessage line\fR is
88: reserved for printing messages, and for accepting input from the user,
89: such as file names, or search strings. When JOVE prompts for input,
90: the cursor will temporarily appear on the bottom line, waiting for you
91: to type a string. When you have finished typing your input, you can
92: type a Return to send it to JOVE. If you change your mind about
93: running the command that is waiting for input, you can type ^G to
94: abort, and you can continue with your editing.
95: .lp
96: Sometimes you will see --more-- on the message line. This happens
97: when typeout from a command is too long to fit in the screen. It
98: means that if you type a Space the next screenful of typeout will be
99: printed. If you are not interested, typing anything but a Space will
100: cause the rest of the output to be discarded. Typing C-G will discard
101: the output and print Aborted where the --more-- was. Typing any other
102: command will discard the rest of the output and also do the command.
103: .es
104: .bs "The Mode Line"
105: At the bottom of the screen, but above the message line, is the
106: \fImode line\fR. The mode line format looks like this:
107: .sp 1
108: \fBJOVE (major minor) Buffer: bufr "file" *\fR
109: .sp 1
110: \fImajor\fR is the name of the current \fImajor mode\fR. At any time,
111: JOVE can be in only one of the possible major modes. Currently there
112: are only two major modes: Text and C.
113: .lp
114: \fIminor\fR is a list of the minor modes that are turned. "Fill"
115: means that Auto Fill mode is on; "Save" means Auto Save mode is on;
116: "OvrWt" means that Over Write mode is on. "Def" means that you are in
117: the process of defining a keyboard macro. This is not really a mode,
118: but it's useful to be reminded about.
119: .lp
120: \fIbufr\fR is the name of the currently selected \fIbuffer\fR.
121: Each buffer has its own name and holds a file being edited; this is
122: how JOVE can hold several files at once. But at any given time you
123: are editing only one of them, the \fIselected\fR buffer. When we
124: speak of what some command does to "the buffer", we are talking about
125: the currently selected buffer. Multiple buffers makes it easy to
126: switch around between several files, and then it is very useful that
127: the mode line tells you which one you are editing at any time.
128: .lp
129: \fIfile\fR is the name of the file that you are editing. This is the
130: default file name for commands that expect a file name as input.
131: .lp
132: The star at the end of the mode line means that there are changes in
133: the buffer that have not been saved in the file. If the file has not
134: been changed since it was read in or saved, there is no star.
135: .es
136: .es
137: .bs "Command Input Conventions"
138: .bs "Notational Conventions for ASCII Characters"
139: In this manual, "Control" characters (that is, characters that are
140: typed with the Control key and some other key at the same time) are
141: represented by "C-" followed by another character. Thus, C-A is the
142: character you get when you type A with the Control key (sometimes
143: labeled CTRL) down. Most control characters when present in the JOVE
144: buffer are displayed with a caret; thus, ^A for C-A. Rubout is
145: displayed as ^?.
146: .es
147: .bs "Commands, Functions, and Variables"
148: JOVE is composed of \fIfunctions\fR, which have long names such as
149: "next-line" and definitions which are programs that perform the
150: editing operations. Then \fIcommands\fR such as C-N are connected to
151: functions through the \fIcommand dispatch table\fR. When we say that
152: C-N moves the cursor down a line, we are glossing over a distinction
153: which is unimportant for ordinary use, but essential for simple
154: customization: it is the function next-line which knows how to move
155: down a line, and C-N moves down a line because it is connected to that
156: function.
157: .lp
158: Sometimes the description of a command will say "to change this, set
159: the variable mumble foo". A variable is a name used to remember a
160: value. JOVE contains variables which are there so that you can change
161: them if you want to customize. The variable's value is examined by
162: some command, and changing that value makes the command behave
163: differently. Until you are interesting in customizing, you can ignore
164: this information.
165: .es
166: .bs "Prefix Characters"
167: Because there are more function names than keys, JOVE provides
168: \fIprefix characters\fR to increase the number of functions that can
169: easily be invoked. When you type a prefix character JOVE will wait
170: for another character before deciding what to do. If you wait more
171: than a second or so, JOVE will print the prefix character on the
172: message line and leave the cursor down there until you type your next
173: character. There are two prefix characters built into JOVE: Escape
174: and Control-X. How the next character is interpreted depends on which
175: prefix character you typed. For example, if you type Escape followed
176: by F you'll run forward-word, but if you type Control-X followed by
177: B you'll run select-buffer.
178: .lp
179: To get a list of keys and their associated function, you type ESC X
180: describe-bindings. If you want to describe a single key, ESC X
181: describe-key will work.
182: .es
183: .es
184: .bs "Basic Editing Commands"
185: .bs "Inserting Text"
186: To insert printing characters into the text you are editing, just type
187: them. All printing characters your type are inserted into the text at
188: the cursor (that is, at \fIpoint\fR), and the cursor moves forward.
189: Any characters after the cursor move forward too. If the text in the
190: buffer is FOOBAR, with the cursor before the B, then if you type XX,
191: you get FOOXXBAR, with the cursor still before the B.
192: .lp
193: To correct text you have just inserted, you can use Rubout. Rubout
194: deletes the character \fIbefore\fR the cursor (not the one that the
195: cursor is on top of or under; that is the character \fIafter\fR the
196: cursor). The cursor and all characters after it move backwards.
197: Therefore, if you typing a printing character and then type Rubout,
198: they cancel out.
199: .lp
200: To end a line and start typing a new one, type Return. Return
201: operates by inserting a \fIline-separator\fR, so if you type Return in
202: the middle of a line, you break the line in two. Because a
203: line-separator is just a single character, you can type Rubout at the
204: beginning of a line to delete the line-separator and join it with the
205: preceding line.
206: .lp
207: If you add too many characters to one line, without breaking it with
208: Return, the line will grow too long to display on one screen line.
209: When this happens, JOVE puts an "!" at the extreme right margin, and
210: doesn't bother to display the rest of the line. The "!" is not part
211: of your text; conversely, even though you can't see the rest of your
212: line, it's still there, and if you break the line, the "!" will go
213: away.
214: .lp
215: Direct insertion works for printing characters and space, but other
216: characters act as editing commands and do not insert themselves. If
217: you need to insert a control character, Escape, or Rubout, you must
218: first \fIquote\fR it by typing the Control-Q command first.
219: .es
220: .bs "Moving the Cursor"
221: To do more than insert characters, you have to know how to move the
222: cursor. Here are a few of the commands for doing that.
223: .ks 1.5i
224: .dk C-A
225: Move to the beginning of the line.
226: .dk C-E
227: Move to the end of the line.
228: .dk C-F
229: Move forward over one character.
230: .dk C-B
231: Move backward over one character.
232: .dk C-N
233: Move down one line, vertically. If you start in the middle of one
234: line, you end in the middle of the next.
235: .dk C-P
236: Move up one line, vertically.
237: .dk "ESC <"
238: Move to the beginning of your text.
239: .dk "ESC >"
240: Move to the end of your text.
241: .ke
242: .es
243: .bs "Erasing Text"
244: .ks 1.5i
245: .dk Rubout
246: Delete the character before the cursor.
247: .dk C-D
248: Delete the character after the cursor.
249: .dk C-K
250: Kill to the end of the line.
251: .ke
252: .lp
253: You already know about the Rubout command which deletes the character
254: before the cursor. Another command, Control-D, deletes the character
255: after the cursor, causing the rest of the text on the line to shift
256: left. If Control-D is typed at the end of a line, that line and the
257: next line are joined together.
258: .lp
259: To erase a larger amount of text, use the Control-K command, which
260: kills a line at a time. If Control-K is done at the beginning or
261: middle of a line, it kills all the text up to the end of the line. If
262: Control-K is done at the end of a line, it joins that line and the
263: next line.
264: .es
265: .bs "Files - Saving Your Work"
266: The commands above are sufficient for creating text in the JOVE
267: buffer. The more advanced JOVE commands just make things easier. But
268: to keep any text permanently you must put it in a \fIfile\fR. Files
269: are the objects which UNIX uses for storing data for a length of
270: time. To tell JOVE to edit text in a file, choose a \fIfilename\fR,
271: such as foo.bar, and type C-X C-R foo.bar<cr>. This \fIreads\fR
272: the file foo.bar so that its contents appear on the screen for
273: editing. You can make changes, and then save the file by typing C-X
274: C-S. This makes the changes permanent and actually changes the file
275: foo.bar. Until then, the changes are only inside you JOVE, and the
276: file foo.bar is not really changed. If the file foo.bar doesn't
277: exist, and you want to create it, read it as if it did exist. When
278: you save your text with C-X C-S the file will be created.
279: .es
280: .es
281: .bs "Giving Numeric Arguments to JOVE Commands"
282: Any JOVE command can be given a \fInumeric argument\fR. Some commands
283: interpret the argument as a repetition count. For example, giving an
284: argument of ten to the C-F command (forward-character) moves forward
285: ten characters. With these commands, no argument is equivalent to an
286: argument of 1.
287: .lp
288: Some commands use the value of the argument, but do something peculiar
289: when there is no argument. For example, ESC G (goto-line) with an
290: argument \fBn\fR goes to the beginning of the \fBn'th\fR line. But
291: ESC G with no argument doesn't do anything.
292: .lp
293: The fundamental way of specifying an argument is to use ESC followed
294: by the digits of the argument. Negative arguments are allowed,
295: although not all of the commands know what to do with one.
296: .lp
297: Typing C-U means do the next command four times. Two such C-U's
298: multiply the next command by sixteen. Thus, C-U C-U C-F moves forward
299: sixteen characters. This is a good way to move forward quickly, since
300: it moves about 1/4 of a line on most terminals. Other useful
301: combinations are: C-U C-U C-N (move down a good fraction of the
302: screen), C-U C-U C-O (make "a lot" of blank lines), and C-U C-K (kill
303: four lines).
304: .lp
305: There are other, terminal-dependent ways of specifying arguments.
306: They have the same effect but may be easier to type. If your terminal
307: has a numeric keypad which sends something recognizably different from
308: the ordinary digits, it is possible to program JOVE to to allow use of
309: the numeric keypad for specifying arguments.
310: .es
311: .bs "The Mark and the Region"
312: In general, a command that processes an arbitray part of the buffer
313: must know where to start and where to stop. In JOVE, such commands
314: usually operate on the text between point and \fIthe mark\fR. This
315: range of text is called \fIthe region\fR. To specify a region, you
316: set point to one end of it and mark at the other. It doesn't matter
317: which one is set first \fIchronologically\fR, or which one comes
318: earlier in the text.
319: .ks 1.5i
320: .dk "C-@"
321: Set the mark where point is.
322: .dk "C-X C-X"
323: Interchange mark and point.
324: .ke
325: .lp
326: For example, if you wish to convert part of the buffer to all
327: upper-case, you can use the C-X C-U command, which operates on the
328: text in the region. You can first go to the beginning of the text to
329: be capitalized, put the mark there, move to the end, and then type C-X
330: C-U. Or, you can set the mark at the end of the text, move to the
331: beginning, and then type C-X C-U. C-X C-U runs the function
332: \fIcase-region-upper\fR, whose name signifies that the region, or
333: everything between point and mark, is to be capitalized.
334: .lp
335: The way to set the mark is with the C-@ command or the C-Space
336: command. They set the mark where point is. Then you can move point
337: away, leaving mark behind.
338: .lp
339: Since terminals have only one cursor, there is no way for JOVE to show
340: you where the mark is located. You have to remember. The usual
341: solution to this problem is to set the mark and then use it soon,
342: before you forget where it is. But you can see where the mark is with
343: the command C-X C-X which puts the mark where point was and point
344: where mark was. The extent of the region is unchanged, but the cursor
345: and point are now at the previous location of the mark.
346: .bs "The Ring of Marks"
347: Aside from delimiting the region, the mark is also useful for
348: remembering a spot that you may want to go back to. To make this
349: feature more useful, JOVE remembers 16 previous locations of the
350: mark. Most commands that set the mark push the old mark onto this
351: stack. To return to a marked location, use C-U C-@. This moves point
352: to where the mark was, and restores the mark from the stack of former
353: marks. So repeated use of this command moves point to all of the old
354: marks on the stack, one by one. Since the stack is actually a ring,
355: enough uses of C-U C-@ bring point back to where it was originally.
356: .lp
357: Some commands whose primary purpose is to move point a great distance
358: take advantage of the stack of marks to give you a way to undo the
359: command. The best example is ESC <, which moves to the beginning of
360: the buffer. If there are more than 22 lines between the beginning of
361: the buffer and point, ESC < sets the mark first, so that you can use
362: C-U C-@ or C-X C-X to go back to where you were. You can change the
363: 22 since it is kept in the variable \fImark-threshold\fR. By setting
364: it to 0, you can make these commands always set the mark. By setting
365: it to a very large number you can prevent these commands from ever
366: setting the mark. If a command desides to set the mark, it prints the
367: message Point Pushed.
368: .es
369: .es
370: .bs "Killing and Moving Text"
371: The most common way of moving or copying text with JOVE is to kill it,
372: and get it back again in one or more places. This is very safe
373: because the last several pieces of killed text are all remembered, and
374: it is versatile, because the many commands for killing syntactic units
375: can also be used for moving those units. There are also other ways of
376: moving text for special purposes.
377: .bs "Deletion and Killing"
378: Most commands which erase text from the buffer save it so that you can
379: get it back if you change your mind, or move or copy it to other parts
380: of the buffer. These commands are known as \fIkill\fR commands. The
381: rest of the commands that erase text do not save it; they are known as
382: \fIdelete\fR commands. The delete commands include C-D and Rubout,
383: which delete only one character at a time, and those commands that
384: delete only spaces or line separators. Commands that can destroy
385: significant amounts of nontrivial data generally kill. The commands'
386: names and individual descriptions use the words "kill" and "delete" to
387: say which they do.
388: .ks 1.8i
389: .dk C-D
390: Delete next character.
391: .dk Rubout
392: Delete previous character.
393: .dk "ESC \\\\"
394: Delete spaces and tabs around point.
395: .dk "C-X C-O"
396: Delete blank lines around the current line.
397: .dk "C-K"
398: Kill rest of line or one or more lines.
399: .dk "C-W"
400: Kill region (from point to the mark).
401: .dk "ESC D"
402: Kill word.
403: .dk "ESC Rubout"
404: Kill word backwards.
405: .dk "ESC K"
406: Kill to end of sentence.
407: .ke
408: .bs "Deletion"
409: The most basic delete commands are C-D and Rubout. C-D deletes the
410: character after the cursor, the one the cursor is "on top of" or
411: "underneath". The cursor doesn't move. Rubout deletes the character
412: before the cursor, and moves the cursor back. Line separators act
413: like normal characters when deleted. Actually, C-D and Rubout aren't
414: always delete commands; if you give an argument, they kill instead.
415: This prevents you from losing a great deal of text by typing a large
416: argument to a C-D or Rubout.
417: .lp
418: The other delete commands are those which delete only formatting
419: characters: spaces, tabs, and line separators. ESC \\ (delete white
420: space) deletes all the spaces and tab characters before and after
421: point. C-X C-O (delete blank lines) deletes all blank lines after the
422: current line, and if the current line is blank deletes all the blank
423: lines preceding the current line as well (leaving one blank line, the
424: current line).
425: .es
426: .bs "Killing by Lines"
427: The simplest kill command is the C-K command. If issued at the
428: beginning of a line, it kills all the text on the line, leaving it
429: blank. If given on a blank line, the blank line disappears. As a
430: consequence, if you go to the front of a non-blank line and type two
431: C-K's, the line disappears completely.
432: .lp
433: More generally, C-K kills from point up to the end of the line, unless
434: it is at the end of a line. In that case, it kills the line separator
435: following the line, thus merging the next line into the current one.
436: Invisible spaces and tabs at the end of the line are ignored when
437: deciding which case applies, so if point appears to be at the end of the
438: line, you can be sure the line separator will be killed.
439: .lp
440: C-K with an argument of zero kills all the text before point on the
441: current line.
442: .es
443: .bs "Other Kill Commands"
444: A kill command which is very general is C-W (kill-region), which kills
445: everything between point and the mark. With this command, you can
446: kill and contiguous characters, if you first set the mark at one end
447: of them and go to the other end.
448: .lp
449: Other syntactic units can be killed: words, with ESC Rubout and ESC D;
450: sentences, with ESC K.
451: .es
452: .es
453: .bs "Un-killing"
454: Un-killing is getting back text which was killed. The usual way to
455: move or copy text is to kill it and then un-kill it one or more times.
456: .ks 1.5i
457: .dk C-Y
458: Yank (re-insert) last killed text.
459: .dk "ESC Y"
460: Replace re-inserted killed text with the previously killed text.
461: .dk "ESC W"
462: Save region as last killed text without killing.
463: .ke
464: .lp
465: Killed text is pushed onto a \fIring buffer\fR called the \fIkill
466: ring\fR that remembers the last 10 blocks of text that were killed.
467: (Why it is called a ring buffer will be explained below.) The command
468: C-Y (yank) reinserts the text of the most recent kill. It leaves the
469: cursor at the end of the text, and puts the mark at the beginning.
470: Thus, a single C-W undoes the C-Y.
471: .lp
472: If you wish to copy a block of text, you might want to use ESC W
473: (copy-region), which copies the region into the kill ring without
474: removing it from the buffer. This is approximately equivalent to C-W
475: followed by C-Y, except that ESC W does not mark the buffer as
476: "changed" and does not temporarily change the screen.
477: .lp
478: There is only one kill ring, and switching buffers or files has no
479: effect on it. After visiting a new file, whatever was last killed in
480: the previous file is still on top of the kill ring. This is important
481: for moving text between files.
482: .bs "Appending Kills"
483: Normally, each kill command pushes a new block onto the kill ring.
484: However, two or more kill commands in a row combine their text into a
485: single entry on the ring, so that a single C-Y command gets it all
486: back as it was before it was killed. This means that you don't have
487: to kill all the text in one command; you can keep killing line after
488: line, or word after word, until you have killed it all, and you can
489: still get it all back at once. (Thus we join television in leading
490: people to kill thoughtlessly.)
491: .fe
492: .lp
493: Commands that kill forward from point add onto the end of the previous
494: killed text. Commands that kill backward from point add onto the
495: beginning. This way, any sequence of mixed forward and backward kill
496: commands puts all the killed text into one entry without rearrangement.
497: .es
498: .bs "Un-killing Earlier Kills"
499: To recover killed text that is no longer the most recent kill, you
500: need the ESC Y (yank-pop) command. The ESC Y command should be used
501: only after a C-Y command or another ESC Y. It takes the un-killed
502: text inserted by the C-Y and replaces it with the text from an earlier
503: kill. So, to recover the text of the next-to-the-last kill, you first
504: use C-Y to recover the last kill, and then use ESC Y to move back to
505: the previous kill.
506: .lp
507: You can think of all the last few kills as living on a ring. After a
508: C-Y command, the text at the front of the ring is also present in the
509: buffer. ESC Y "rotates" the ring bringing the previous string of text
510: to the front, and this text replaces the other text in the buffer as
511: well. Enough ESC Y commands can rotate any part of the ring to the
512: front, so you can get at any kiled text solong as it is recent enough
513: to be still in the ring. Eventually the ring rotates all the way
514: around and the most recent killed text comes to the front (and into
515: the buffer) again. ESC Y with a negative argument rotates the ring
516: backwards.
517: .lp
518: When the text you are looking for is brought into the buffer, you can
519: stop doing ESC Y's and it will stay there. It's really just a copy of
520: what's in at the front of the ring, so editing it does not change
521: what's in the ring. And the ring, once rotated, stays rotated, so
522: that doing another C-Y gets another copy of what you rotated to the
523: fron with ESC Y.
524: .lp
525: If you change you mind about un-killing, and C-W gets rid of the
526: un-killed text at any point, after any number of ESC Y's. C-W pushes
527: the text onto the ring again.
528: .es
529: .es
530: .es
531: .bs "Searching"
532: The search commands are useful for finding and moving to arbitrary
533: positions in the buffer in one swift motion. For example, if you just
534: ran the spell program on a paper and you want to correct some word,
535: you can use the search commands to move directly to that word.
536: .bs "Conventional Search"
537: .ks 1.5i
538: .dk "C-S"
539: Search forward.
540: .dk "C-R"
541: Search backward.
542: .ke
543: .lp
544: To search for the string "FOO" you type "C-S FOO<CR>". If JOVE finds
545: FOO it moves point to the end of it; otherwise JOVE prints an error
546: message and leaves point unchanged. C-S searches forward from point
547: so only occurrences of FOO after point are found. To search in the
548: other direction use C-R. It is exactly the same as C-S except it
549: searches in the opposite direction, and if it finds the string, it
550: leaves point at the beginning of it, not at the end as in C-S.
551: .lp
552: While JOVE is searching it prints the search string on the message
553: line line. This is so you know what JOVE is doing. When the system
554: is heavily loaded, when editing in exceptionally large buffers,
555: searches can take several (sometimes many) seconds.
556: .lp
557: JOVE remembers the last search string you used, so if you want to
558: search for the same string you can type "C-S <cr>". If you mistyped
559: the last search string, you can type C-S followed by C-R. C-R, as
560: usual inserts the default search string into the minibuffer, and then
561: you can fix it up.
562: .es
563: .bs "Incremental Search"
564: This search command is unusual in that is is \fIincremental\fR; it
565: begins to search before you have finished typing the search string.
566: As you type in the search string, JOVE shows you where it would be
567: found. WHen you have typed enough characters to identify the place
568: you want, you can stop. Depending on what you will do next, you may
569: or may not need to terminate the search explicitly with a Return
570: first.
571: .lp
572: The command to search is C-S (i-search-forward).
573: .fb
574: It is assumed that your JOVE has i-search-forward bound to C-S and
575: i-search-reverse bound to C-R. These are not the default bindings.
576: .fe
577: C-S reads in characters and positions the cursor at the first
578: occurrence of the characters that you have typed. If you type C-S and
579: then F, the cursor moves right after the first "F". Type an "O", and
580: see the cursor move to after the first "FO". After another "O", the
581: cursor is after the first "FOO" after the place where you started the
582: search. At the same time, the "FOO" has echoed on the message line.
583: .lp
584: If you type a mistaken character, you can rub it out. After the FOO,
585: typing a Rubout makes the "O" disappear from the message line, leaving
586: only "FO". The cursor moves back to the "FO". Rubbing out the "O"
587: and "F" moves the cursor back to where you started the search.
588: .lp
589: When you are satisfied with the place you have reached, you can type a
590: Return, which stops searching, leaving the cursor where the search
591: brought it. Also, any command not specially meaningful in searches
592: stops the searching and is then executed. Thus, typing C-A would exit
593: the search and then move to the beginning of the line. Return is
594: necessary only of the next character you want to type is a printing
595: character, Rubout, Return, or another search command, since those ar
596: ethe characters that have special meanings inside the search.
597: .lp
598: Sometimes you search for "FOO" and find it, but not the one you
599: expected to find. There was a second FOO that you forgot about,
600: before the one you were looking for. Then type another C-S and the
601: cursor will find the next FOO. This can be done any number of times.
602: If you overshoot, you can rub out the C-S's.
603: .lp
604: After you exist a search, you can search for the same string again by
605: typing just C-S C-S: one C-S command to start the search and then
606: another C-S to mean "search again".
607: .lp
608: If your string is not found at all, the message line says "Failing
609: I-search". The cursor is after the place where JOVE found as much of
610: your string as it could. Thus, if you search for FOOT, and there is
611: not FOOT, you might see the cursor after the FOO in FOOL. At this
612: point there are several things you can do. If your string was
613: mistyped, you can rub some of it out and correct it. If you like the
614: places you have found, you can type Return or some other JOVE command
615: to "accept what the search offered". Or you can type C-G, which
616: undoes the search altogether and positions you back where you started
617: the search.
618: .lp
619: You can also type C-R at any time to start searching backwards. If a
620: search fails because the place you started was too late in the file,
621: you should do this. Repeated C-R's keep looking formore occurrences
622: backwards. A C-S starts going forwards again. C-R's can be rubbed
623: out just like anything else. If you know that you want to start
624: search backwards, you can use C-R (i-search-reverse) to search
625: backward.
626: .es
627: .bs "Regular Expressions Search Strings"
628: I couldn't describe them if I tried!
629: .es
630: .es
631: .bs "Commands for English Text"
632: .bs "Word Commands"
633: JOVE has commands for moving over or operating on words. By
634: convention, they are all ESC commands.
635: .ks 1.7i
636: .dk "ESC F"
637: Move Forward over a word.
638: .dk "ESC B"
639: Move Backward over a word.
640: .dk "ESC D"
641: Kill up to the end of a word.
642: .dk "ESC Rubout"
643: Kill up to the beginning of a word.
644: .dk "ESC T"
645: Transpose two words; drag a word forward or backward across other words.
646: .ke
647: .lp
648: Notice how these commands form a group that parallels the character
649: base commands, C-F, C-B, C-D, Rubout, and C-T.
650: .lp
651: The commands ESC F and ESC B move forward and backward over words.
652: They are thus analogous to Control-F and Control-B, which move over
653: single characters. Like their Control- analogues, ESC F and ESC B
654: move several words if given an argument. ESC F with a negative
655: argument moves backward like ESC B, and ESC B with a negative argument
656: moves forward. Forward motion stops right after the last letter of
657: the word, while backward motion stops right before the first letter.
658: .lp
659: It is easy to kill a word at a time. ESC D kills the word after
660: point. To be precise, it kills everything from point to the place ESC
661: F would move to. Thus, if point is in the middle of a word, only the
662: part after point is killed. If some punctuation comes after point,
663: and before the next word, it is killed along with the word. If you
664: wish to kill only the next word but not the punctuation, simply do ESC
665: F to get to the end, and kill the word backwards with ESC Rubout. ESC
666: D takes arguments just like ESC F.
667: .lp
668: ESC Rubout kills the word before point. It kills everything from
669: point back to where ESC B would move to. If point is after the space
670: int "FOO, BAR", then "FOO, " is killed. If you wish to kill just
671: "FOO", then do a ESC B and a ESC D instead of a ESC Rubout.
672: .es
673: .bs "Sentence and Paragraph Commands"
674: The JOVE commands for manipulating sentences and paragraphs are
675: entirely ESC commands, so as to resemble the word-handling commands.
676: .ks 1.7i
677: .dk "ESC A"
678: Move back to the beginning of the sentence.
679: .dk "ESC E"
680: Move forward to the end of the sentence.
681: .dk "ESC K"
682: Kill forward to the end of the sentence."
683: .dk "ESC ["
684: Move back to previous paragraph beginning.
685: .dk "ESC ]"
686: Move forward to next paragraph end.
687: .dk "C-X Rubout"
688: Kill back to the beginning of the sentence.
689: .ke
690: .bs Sentences
691: The commands ESC A and ESC E move to the beginning and end of the
692: current sentence, respectively. They were chosen to resemble
693: Control-A and Control-E, which move to the beginning and end of a
694: line. Unlike them, ESC A and ESC E if repeated or given numeric
695: arguments move over successive sentences. JOVE considers a sentence
696: to end wherever there is a ".", "?", or "!" followed by the end of a
697: line, or one or more spaces. Neither ESC A nor ESC E moves past the
698: end of the line or spaces which delimit the sentence.
699: .lp
700: Just as C-A and C-E have a kill command, C-K, to go with them, so ESC
701: A and ESC E have a corrisponding kill command ESC K which kills from
702: point to the end of the sentence. With minus one as an argument it
703: kills back to the beginning of the sentence. Larger arguments serve
704: as a repeat count.
705: .lp
706: There is a special command, C-X Rubout for killing back to the
707: beginning of a sentence, because this is useful when you change your
708: mind in the middle of composing text.
709: .es
710: .bs Paragraphs
711: ESC [ moves to the beginning of the current or previous paragraph,
712: while ESC ] moves to the end of the current or next paragraph. Blank
713: lines and text justifier command lines separate paragraphs and are not
714: part of any paragraph. Also, an indented line starts a new
715: paragraph. A line beginning with a letter which can't be part of a
716: word, e.g., period, singlequote, "-", "\\", it is considered a
717: paragraph terminator.
718: .es
719: .es
720: .bs Indentation Commands for Text
721: .ks 1.7i
722: .dk "Tab"
723: Indent "appropriately" in a mode-dependent fashion.
724: .dk "LineFeed"
725: Is the same as Return, except it copies the indent of the line you
726: just left.
727: .dk "ESC M"
728: Moves to the line's first non-blank character.
729: .ke
730: .lp
731: The way to request indentation is with the Tab command. Its precise
732: effect depends on the major mode. In Text mode, it indents to the
733: next tab stop. In C mode, it indents to the "right" position for C
734: programs.
735: .lp
736: To move over the indentation on a line, do ESC M. This command, given
737: anywhere on a line, positions the cursor at the first nonblank
738: character on the line.
739: .es
740: .bs "Text Filling"
741: auto-fill mode lets you type in text that is \fIfilled\fR (broken up
742: into lines that fit ina specified width) as you go. If you alter
743: existing text and this cause it to cease to be properly filled, JOVE
744: can fill it again if you ask.
745: .lp
746: Entering auto-fill mode is done with ESC X auto-fill. From then on,
747: lines are broken automatically at spaces when they get longer than the
748: desired width. To leave auto-fill mode, execute ESC X auto-fill
749: again. When auto-fill mode is in effect, the word "Fill" appears in
750: the mode line.
751: .lp
752: If you edit the middle of a paragraph, it may no longer correctly be
753: filled. To refill a paragraph, use the command ESC J. It causes the
754: paragraph that point is inside to be filled. All the line breaks are
755: removed and then new ones are inserted where necessary.
756: .lp
757: The maximum line width for filling is in the variable right-margin.
758: Both ESC J and auto-fill make sure that no line exceeds this width.
759: right-margin is initially 72.
760: .es
761: .bs "Case Conversion Commands"
762: .ks 1.5i
763: .dk "ESC L"
764: Convert following word to lower case.
765: .dk "ESC U"
766: Convert following word to upper case.
767: .dk "ESC C"
768: Capitalize the following word.
769: .ke
770: .lp
771: The word conversion commands are most useful. ESC L converts the word
772: after point to lower case, moving past it. This, successive ESC L's
773: convert successive words. ESC U converts to all capitals instead,
774: while ESC C puts the first letter of the word into upper case and the
775: rest into lower case. All these commands convert several words at
776: once if given an argument. They are especially convenient for
777: converting a large amount of text from all upper case to mixed case,
778: because you can move through the test using ESC L, ESC U or ESC C on
779: each word as appropriate.
780: .lp
781: When given a negative argument, the word case conversion commands
782: apply to the appropriate number of words before point, but do not move
783: point. This is convenient when you have just typed a word in the
784: wrong case. You can give the case conversion command and continue
785: typing.
786: .lp
787: If a word case conversion command is given in the middle of a word, it
788: applies only to the part of the word which follows the cursor,
789: treating it as a whole word.
790: .lp
791: The other case conversion functions are case-region-upper and
792: case-region-lower, which convert everything between point and mark to
793: the specified case. Point and mark do not move.
794: .es
795: .es
796: .bs "Commands for Fixing Typos"
797: In this section we describe the commands that are especially useful
798: for the times when you catch a mistake on your text after you have
799: made it, or change your mind while composing text on line.
800: .ks 2.2i
801: .dk "Rubout"
802: Delete last character.
803: .dk "ESC Rubout"
804: Kill last word.
805: .dk "C-X Rubout"
806: Kill to beginning of sentence.
807: .dk "C-T"
808: Transpose two characters.
809: .dk "C-X C-T"
810: Transpose two lines.
811: .dk "ESC Minus ESC L"
812: Convert last word to lower case.
813: .dk "ESC Minus ESC U"
814: Convert last word to upper case.
815: .dk "ESC Minus ESC C"
816: Convert last word to lower case with capital initial.
817: .ke
818: .bs "Killing Your Mistakes"
819: The Rubout command is the most important correction command. When
820: used among printing (self-inserting) characters, it can be thought of
821: as canceling the last character typed.
822: .lp
823: When your mistake is longer than a couple of characters, it might be
824: more convenient to use ESC Rubout or C-X Rubout. ESC Rubout kills
825: back to the start of the last word, and C-X Rubout kills back to the
826: start of the last sentence. C-X Rubout is particularly useful when
827: you are thinking of what to write as you type it, in case you change
828: your mind about phrasing. ESC Rubout and C-X Rubout save the killed
829: text for C-Y and ESC Y to retrieve.
830: .lp
831: ESC Rubout is often useful even when you have typed only a few
832: characters wrong, if you know you are confused in your typing and
833: aren't sure what you typed. At such a time, you cannot correct with
834: Rubout except by looking at the screen to see what you did. It
835: requires less thought to kill the whole word and start over again,
836: especially if the system is heavily loaded.
837: .es
838: .bs "Transposition"
839: The command error of transposing two characters can be fixed, when
840: they are adjacent, with the C-T command. Normally, C-T transposes the
841: two characters on either side of the cursor. When given at the end of
842: a line, rather than switching the last character of the line with the
843: line separator, which would be useless, C-T transposees the last two
844: characters on the line. So, if you catch your transposition error
845: right away, you can fix it with just a C-T. If you don't catch it so
846: fast, you must move the cursor back to between the two characters.
847: .lp
848: To transpose two lines, use the C-X C-T command.
849: .es
850: .bs "Checking and Correcting Spelling"
851: When you write a paper, you should correct its spelling at some point
852: close the finishing it. To correct the entire buffer, do ESC X
853: spell-buffer. This invokes the UNIX spell program, which prints a list
854: of all the misspelled words. JOVE catches the list and places it in a
855: JOVE buffer called Spell, and then looks up each misspelled word and
856: remembers where it is in the buffer being corrected. Then you can go
857: forward to each misspelled word with C-X C-N (next-error) and backward
858: with C-X C-P (previous-error). See error parsing.
859: .es
860: .es
861: .bs "File Handling"
862: The basic unit of stored data is the file. Each program, each paper,
863: lives usually in its own file. To edit a program or paper, the editor
864: must be told the name of the file that contains it. This is called
865: \fIvisiting\fR a file. To make your changes to the file perminent on
866: disk, you must \fIsave\fR the file.
867: .bs "Visiting Files"
868: .ks 1.5i
869: .dk "C-X C-V"
870: Visit a file.
871: .dk "C-X C-R"
872: Same as C-X C-V.
873: .dk "C-X C-S"
874: Save the visited file.
875: .dk "ESC ~"
876: Tell JOVE to forget that the buffer has been changed.
877: .ke
878: .lp
879: \fIVisiting\fR a file means copying its contents into JOVE where you
880: can edit them. JOVE remembers the name of the file you visited.
881: Unless you use the multiple buffer or window features of JOVE, you can
882: only be visiting one file at a time. The name of the current selected
883: buffer is visible in the mode line.
884: .lp
885: The changes you make with JOVE are made in a copy inside JOVE. The
886: file itself is not changed. The changed test is not permanent until
887: you \fIsave\fR it in a file. The first time you change the text, a
888: star appears at the end of the mode line; this indicates that the text
889: contains fresh changes which will be lost unless you save them.
890: .lp
891: To visit a file, use the command C-X C-V. Follow the command with the
892: name of the file you wish to visit, terminated by a Return. You can
893: abort the command by typing C-G, or edit the filename with the many of
894: the standard JOVE commands (e.g., C-A, C-E, C-F, ESC F, ESC Rubout).
895: If the filename you wish to visit is similar to the filename in the
896: mode line (the default file name), you can type C-R to insert the
897: default and then edit it. If you do type a Return to finish the
898: command, the new file's text appears on the screen, and its name
899: appears in the mode line. In addition, its name becomes the new
900: default filename.
901: .lp
902: If you wish to save the file and make your changes permanent, type C-X
903: C-S. After the save is finished, C-X C-S prints the filename and the
904: number of characters and lines that it wrote to the file. If there
905: are no changes to save (no star at the end of the mode line), the file
906: is not saved; otherwise the changes saved and the star at the end of
907: the mode line will disappear.
908: .lp
909: Because a system crash can cause you to lose everything you have done
910: since the last save, we provide auto-save mode, which saves the files
911: you are visiting at regular intervals automatically. See auto-save.
912: .lp
913: What if you want to create a file? Just visit it. JOVE prints "(New
914: file)" but aside from that behaves as if you had visited an existing
915: empty file. If you make any changes and save them, the file is
916: created. If you visit a nonexistent file unintentionally (because you
917: typed the wrong filename), go ahead and visit the file you meant. If
918: you don't save the unwanted file, it is not created.
919: .lp
920: If you alter one file and then visit another in the same buffer, JOVE
921: offers to save the old one. If you answer YES, the old file is saved;
922: if you answer NO, all the changes you have made to it since the last
923: save are lost. You should not type ahead after a file visiting
924: command, because your type-ahead might answer an unexpected question
925: in a way that you would regret.
926: .lp
927: Sometimes you will change a buffer by accident. Even if you undo the
928: change by hand, JOVE still knows that "the buffer has been changed".
929: You can tell JOVE to belive that there have been no changes with the
930: ESC ~ command. This command simply clears the "modified" flag which
931: says that the buffer contains changes which need to be saved. Even if
932: the buffer really \fIis\fR changed JOVE will still act as if it were
933: not.
934: .lp
935: If JOVE is about to save a file and sees that the date of the version
936: on disk does not match what JOVE last read or wrote, JOVE notifies you
937: of this fact, and asks what to do, because this probably means that
938: something is wrong. For example, somebody else may have been editing
939: the same file. If this is so, there is a good chance that your work
940: or his work will be lost if you don't take the proper steps. You
941: should first find out exactly what is going on. If you determine that
942: somebody else has modified the file, save your file under a different
943: name and then DIFF the two files to merge the two sets of changes.
944: Also get in touch with the other person so that he doesn't continue
945: editing.
946: .es
947: .bs "How to Undo Drastic Changes to a File"
948: If you have made several extensive changes to a file and then change
949: your mind about them, and you haven't yet saved them, you can get rid
950: of them by reading in the previous version of the file. You can do
951: this with the C-X C-V command, to visit the unsaved version of the file.
952: .es
953: .bs "Auto Save Mode"
954: In auto-save mode, JOVE saves your file from time to time (based on
955: counting your commands) without being asked. This prevents you from
956: losing more than a limited amount of work in a disaster.
957: .lp
958: You can turn auto saving on or off in an individual buffer with ESC X
959: auto-save. In addition, you can have auto savng by default in all
960: buffers by putting the auto-save line in your initialization file.
961: See initialization files. The frequency of saving can be specified.
962: .lp
963: Once you have visited a file, you can turn auto saving on or off with
964: ESC X auto-save. Line other minor mode commands, ESC X auto-save
965: toggles. If you start typing a new file into a buffer without
966: visiting anything, auto-save mode is initially off, but you can turn
967: it on with ESC X auto-save.
968: .lp
969: When JOVE decides to do an auto-save, it doesn't save it under the
970: name you have visited; instead it saves it under some special "auto
971: save file name". This file name will be the same as your visited file
972: name except for having "+" appended to it. An error in the process of
973: auto saving prints "(Auto Save Error!)". When you leave the editor
974: normally, all auto saved files are removed. However, if there is an
975: internal error or the system crashes, the save files will not be
976: removed so that you salvage your work.
977: .lp
978: If you want to save your file "for real", use C-X C-S, as always.
979: .es
980: .bs "Miscellaneous File Operations"
981: .lp
982: ESC X write-named-file <file><cr> writes the contents of the buffer
983: into the file <file>, and then visits that file. It can be thought of
984: as a way of "changing the name" of the file you are visiting. Unlike
985: C-X C-S, write-file saves even if the buffer has not been changed.
986: C-X C-W is another way of getting this command.
987: .lp
988: ESC X insert-file <file><cr> inserts the contents of <file> into the
989: buffer at point, leaving point unchanged before the contents. You can
990: also use C-X C-I to get this command.
991: .lp
992: ESC X write-region <file><cr> writes the region (the text between
993: point and mark) to the specified file. It does not set the visited
994: filenames. The buffer is not changed.
995: .lp
996: ESC X append-region <file><cr> appends the region to <file>. The text
997: is added to the end of <file>.
998: .es
999: .es
1000: .bs "Using Multiple Buffers"
1001: When we speak of "the buffer", which contains the text you are
1002: editing, we have given the impression that there is only one. In
1003: fact, there may be many of them, each with its own body of text. At
1004: any time only one buffer can be \fIselected\fR and available for
1005: editing, but it isn't hard to switch to a different one. Each buffer
1006: individually remembers which file it is visiting, what modes are in
1007: effect, and whether there are any changes that need saving.
1008: .ks 1.3i
1009: .dk "C-X B"
1010: Select or create a buffer.
1011: .dk "C-X C-F"
1012: Visit a file in its own buffer.
1013: .dk "C-X C-B"
1014: List the existing buffers.
1015: .dk "C-X K"
1016: Kill a buffer.
1017: .ke
1018: .lp
1019: Each buffer in JOVE has a single name, which normally doesn't change.
1020: A buffer's name can be anylength. The name of the currently selected
1021: buffer, and the name of the file visited in it, are visible in the
1022: mode line when you are at top level. A newly started JOVE has only
1023: one buffer, named "Main".
1024: .bs "Creating and Selecting Buffers"
1025: To create a new buffer, you need only think of a name for it (say,
1026: FOO) and then do C-X B FOO<cr>, which is the command C-X B
1027: (select-buffer) followed by the name. This makes a new, empty buffer
1028: and selects it for editing. The new buffer is not visiting any file,
1029: so if you try to save it you will be asked for the filename to use.
1030: Each buffer as its own major mode; the new buffer's major mode is
1031: always Text mode.
1032: .lp
1033: To return to buffer FOO later after hacing switched to another, the
1034: same command C-X B FOO<cr> is used, since C-X B can atell whether a
1035: buffer named FOO exists already or not. C-X B Main<cr> reselects the
1036: buffer Main that JOVE started out with. Just C-X B<cr> reselects the
1037: previous buffer. Repeated C-X B<cr>'s alternate between the last two
1038: buffers selected.
1039: .lp
1040: You can also read a file into its own newly created buffer, all with
1041: one command: C-X C-F (find-file), followed by the filename. The name
1042: of the buffer is the last name in the element of the file's pathname.
1043: C-F stands for "Find", because if the specified file already resides
1044: in a buffer in your JOVE, that buffer is reselected. So you need not
1045: remember whether you have brought the file in already or not. A
1046: buffer created by C-X C-F can be reslected later with C-X B or C-X
1047: C-F, whichever you find more convenient. Nonexistent files can be
1048: created with C-X C-F just as they can with C-X C-V.
1049: .es
1050: .bs "Using Existing Buffers"
1051: To get a list of all the buffers that exist, do C-X C-B
1052: (list-buffers). Each buffer's type, name, and visited
1053: filenames are printed. A star before the buffer name indicates a
1054: buffer which contains changes that hav enot been saved. The number
1055: that appears at the beginning of a line in a C-X C-B listing is that
1056: buffer's \FIbuffer number\fR. You can select a buffer by typing its
1057: number in place of its name. If a buffer with that number doesn't
1058: already exist, a new buffer is created with that number as its name.
1059: .lp
1060: If several buffers have stars, you should save some of them with C-X
1061: C-M (write-modified-files). This finds all the buffers that need
1062: saving and then saves them. Saving the buffers this way is much
1063: easier and more efficient than selecting each one and typing C-X C-S.
1064: If a numeric argument is supplied, it asks whether to save each buffer,
1065: individually.
1066: .lp
1067: ESC X rename-buffer <new name><cr> changes the name of the currently
1068: selected buffer.
1069: .lp
1070: ESC X erase-buffer<buffer name><cr> erases the contents of the <buffer
1071: name> without deleting the buffer entirely.
1072: .es
1073: .bs "Killing Buffers"
1074: After you use a JOVE for a while, it may fill up with buffers which
1075: you no longer need. Eventually you can reach a point where trying to
1076: create any more results in an "out of memory" or "out of lines"
1077: error. When this happens you will want to kill some buffers with the
1078: C-X K (delete-buffer) command. You can kill the buffer FOO by doing
1079: C-X K FOO<cr>. If you type C-X K <cr> JOVe will kill the previously
1080: selected buffer. If you try to kill a buffer that needs saving JOVE
1081: will ask you to confirm it.
1082: .es
1083: .es
1084: .bs "Controlling the Display"
1085: Since only part of a large file fits on the screen, JOVE tries to show
1086: the part that is likely to be interesting. The display control
1087: commands allow you to see a different part of the file.
1088: .ks 1.5i
1089: .dk "C-L"
1090: Reposition point at a specified vertical position, OR clear and redraw
1091: the screen with point in the same place.
1092: .dk "C-V"
1093: Scroll forwards (a screen or a few lines).
1094: .dk "ESC V"
1095: Scroll backwards.
1096: .dk "C-Z"
1097: Scroll forward some lines.
1098: .dk "ESC Z"
1099: Scroll backwards some lines.
1100: .dk "ESC ,"
1101: Beginning of screen.
1102: .dk "ESC ."
1103: End of screen.
1104: .ke
1105: .lp
1106: The terminal screen is rarely large enough to display all of your
1107: file. If the whole buffer doesn't fit on the screen, JOVE shows a
1108: contiguous portion of it, containing point. It continues to show
1109: approximately the same portion until point moves outside of it; then
1110: JOVE chooses a new portion centered the new point. This is JOVE's
1111: guess as to what you are most interested in seeing. But if the guess
1112: is wrong, you can use the display control commands to see a different
1113: portion. The finite area of screen through which you can see part of
1114: the buffer is called \fIthe window\fR, and the choice of where in the
1115: buffer to start displaying is also called \fIthe window\fR.
1116: .lp
1117: First we describe how JOVE chooses a new window position on its own.
1118: The goal is usually to place point half way down the screen. This is
1119: controlled by the variable scroll-step, whose value is the number of
1120: lines above the bottom or below the top of the window that the line
1121: containing point is placed. A value of 0 (the initial value) means
1122: center the screen.
1123: .lp
1124: The basic display control command is C-L (redraw-display). In its
1125: simplest form, with no argument, it tells JOVE to choose a new window
1126: position, centering point half way from the top as usual.
1127: .lp
1128: C-L with a positive argument chooses a new window so as to point point
1129: that many lines from the top. An argument of zero puts point on the
1130: very top line. Point does not move with respect to the text; rather,
1131: the text and point move rigidly on the screen.
1132: .lp
1133: If point stays on the same line, the screen is first cleared and then
1134: redrawn. Thus, two C-L's in a row are guarenteed to clear the screen.
1135: .lp
1136: The \fIscrolling\fR commands C-V, ESC V, C-Z, and ESC Z, let you move
1137: the whole display up or down a few lines. C-V (next-page) with an
1138: argument shows you that many more lines at the bottom of the screen,
1139: moving the text and point up together as C-L might. C-V with a
1140: negative argument shows you more lines at the top of the screen, as
1141: does ESC V with a positive argument.
1142: .lp
1143: To read the buffer a screenful at a time, use the C-V command with no
1144: argument. It takes the last line at the bottom of the screen and puts
1145: it at the top, followed by nearly a whole screenful of lines not
1146: visible before. Point is put at the top of the screen. Thus, each
1147: C-V shows the "next screenful", except for one line of overlap to
1148: provide continuity. To move backward, use ESC V without an argument,
1149: which moves a whole screenful backwards (again with overlap).
1150: .lp
1151: C-Z and ESC Z scroll one line forward and one line backward,
1152: respectively. These are convenient for moving in units of lines
1153: without having to type a numeric argument.
1154: .lp
1155: Use ESC , to move to the top of the window and ESC . to go to the
1156: end. Notice the similarity between ESC , and ESC <, and ESC . and
1157: ESC >. The only difference between them is how far they move.
1158: .es
1159: .bs "Multiple Windows"
1160: JOVE allows you to split the screen into two or more \fIwindows\fR and
1161: use them to display parts of different files, or different parts of
1162: the same file.
1163: .ks 1.5i
1164: .dk "C-X 2"
1165: Divide the current window into two smaller ones.
1166: .dk "C-X 1"
1167: Delete windows all but the current one.
1168: .dk "C-X N"
1169: Switch to the next window.
1170: .dk "C-X P"
1171: Switch to the previous window.
1172: .dk "C-X O"
1173: Same as C-X P.
1174: .dk "C-X ^"
1175: Make this window bigger.
1176: .dk "ESC C-V"
1177: Scroll the other window.
1178: .ke
1179: .lp
1180: When using \fImultiple window\fR mode, the text portion of the screen
1181: is divided into separate parts called \fIwindows\fR, which display
1182: different pieces of text. Each window can display different files, or
1183: parts of the same file. Only one of the windows is selected; that is
1184: the window which the cursor is in. Editing normally takes place in
1185: that window alone. To edit in another window, you would give a
1186: special command to move the cursor to the other window, and then edit
1187: there.
1188: .lp
1189: Each window displays a mode line for the buffer it's displaying. This
1190: is useful when we are editing different files and want to know which
1191: file the other window is displaying. In addition, all except the bottom
1192: window put dashes at the beginning and end of the mode line so that
1193: there is a clear seperator between windows.
1194: .lp
1195: The command C-X 2 (split-current-window) enters multiple window mode.
1196: A new mode line appears accross the middle of the screen, dividing the
1197: text display area into two halves. Both windows contain the same
1198: buffer and display the same position in it, namely where point was at
1199: the time you issued the command. The cursor moves to the second
1200: window.
1201: .lp
1202: To return to viewing only one window, use the command C-X 1
1203: (delete-other-windows). The current window expands to fill the whole
1204: screen, and the other windows disappear until the next C-X 2.
1205: .lp
1206: While there is more than one window, you can use C-X N (next-window)
1207: to switch to the next window, and C-X P (previous-window) to switch to
1208: the previous one. If you are in the bottom window and you type C-X N,
1209: you will be placed in the top window, and the same kind of thing
1210: happens when you type C-X P in the top window, namely you will be
1211: placed in the bottom window. C-X O is the same as C-X P. It stands
1212: for other window because when there are only two windows, repeated use
1213: of this command with switch between the two windows.
1214: .lp
1215: Often you will be editing one window while using the other just for
1216: reference. Then, the command ESC C-V (page-next-window) is very
1217: useful. It scrolls the next window, as if you switched to the next
1218: window, typed C-V, and switched back, without your having to do all
1219: that. With a negative argument, ESC C-V will do an ESC V in the next
1220: window.
1221: .lp
1222: When a window splits, both halves are approximately the same size.
1223: You can redistribute the screen space between the windows with the C-X
1224: ^ (grow-window) command. It makes the currently selected window grow
1225: one line bigger, or as many lines as is specified with a numeric
1226: argument. Use ESC X shrink-window to make the current window smaller.
1227: .bs Multiple Windows and Mulitple Buffers
1228: Buffers can be selected independently in each window. The C-X B
1229: command selects a new buffer in whichever window the cursor is in.
1230: The other window's buffer does not change.
1231: .lp
1232: You can view the same buffer in more than one window. Although the
1233: same buffer appears in both windows, they have different values of
1234: point, so you can move around in one window while the other window
1235: continues to show the same text. Then, having found the place you
1236: wish to refer to, you can go back into the other window with C-X O to
1237: make your changes.
1238: .lp
1239: If you have the same buffer in both windows, you must beware of trying
1240: to visit a different file in one of the windows with C-X C-V, because
1241: if you bring a new file into this buffer, it will replaced the old
1242: file in \fIboth\fR windows. To view different files in differnent
1243: windows, you must switch buffers in one of the windows first (with C-X
1244: B or C-X C-F, perhaps).
1245: .lp
1246: A convenient "combination" command for viewing something in another
1247: window is C-X 4 (visit-in-other-window). With this command you can
1248: ask to see any specified buffer, file or tag in the other window.
1249: Follow the C-X 4 with either B and a buffer name, F and a file name,
1250: or T and a tag name. This switches to the other window and finds
1251: there what you specified. If you were previously in one-window mode,
1252: multiple-window mode is entered. C-X 4 B is similar to C-X 2 C-X B.
1253: C-X 4 F is similar to C-X 2 C-X C-F. C-X 4 T is similar to C-X 2 C-X
1254: T. The difference is one of efficiency, and also that C-X 4 works
1255: equally as well if you are already using two windows.
1256: .es
1257: .es
1258: .bs "Replacement Commands"
1259: Global search-and-replace operations are not needed as often in JOVE
1260: as they are in other editors, but they are available. In addition to
1261: the simple Replace operation which is like that found in most editors,
1262: there is a Query Replace operation which asks you, for each occurrence
1263: of the pattern, whether to replace it.
1264: .lp
1265: To replace every occurrence of FOO after point which BAR, you can do
1266: .eg "ESC R FOO<cr>BAR"
1267: Replacement occurs only after point, so if you want to cover the whole
1268: buffer you must go to the beginning first. Replacement continues to
1269: the end of the buffer.
1270: .bs "Query Replace"
1271: If you want to change only some of the occurrences of FOO, not all,
1272: then you cannot use and ordinary Replace. Instead, use
1273: .eg "ESC Q FOO<cr>BAR"
1274: This displays each occurrence of FOO and waits for you to say whether
1275: to replace it with a BAR. The things you can type when you are shown
1276: an occurrence of FOO are:
1277: .ks 1.3i
1278: .dk "Space"
1279: to replace the FOO.
1280: .dk "Rubout"
1281: to skip the next FOO without replacing this one.
1282: .dk "Return"
1283: to exit without doing any more replacements.
1284: .dk "Period"
1285: to replace this FOO and then exit.
1286: .dk "! or P"
1287: to replace all remaining FOO's without asking.
1288: .dk "C-R or R"
1289: to enter a recursive editing level, in case the FOO needs to be edited
1290: rather than just replaced with a BAR. When you are done, exit the
1291: recursive editing level with C-X C-C and the next FOO will be
1292: displayed.
1293: .dk "C-W"
1294: to delete the FOO, and then start editing the buffer. When you are
1295: finished editing whatever is to replace the FOO, exit the recursive
1296: editing level with C-X C-C and the next FOO will be displayed.
1297: .dk "U"
1298: move to the last replacement and undo it, and then enter a recursive
1299: editing level. When you have finished editing the FOO, exit the
1300: recursive editing level with C-X C-C and then next FOO will be
1301: displayed.
1302: .ke
1303: .es
1304: .es
1305: .bs "Processes Under JOVE"
1306: Another feature in JOVE is its ability to interact with UNIX in a
1307: useful way. You can run other UNIX commands from JOVE and catch their
1308: output in JOVE buffers. In this chapter we will discuss the different
1309: ways to run and interact with UNIX commands.
1310: .bs Non-interactive UNIX commands
1311: To run a UNIX command from JOVE just type "C-X !" followed by the name
1312: of the command terminated with Return. For example, to get a list of
1313: all the users on the system, you do:
1314: .eg "C-X ! who<cr>"
1315: Then JOVE picks a reasonable buffer in which the output from the
1316: command will be placed. E.g., "who" uses the buffer called "who", and
1317: "ps alx" uses "ps", and "fgrep -n foo *.c" uses "fgrep". If JOVE
1318: wants to use a buffer that already exists it first erases the old
1319: contents. If the buffer it selects holds a file, not output from a
1320: previous shell command, you must first delete that buffer with C-X K.
1321: .lp
1322: Once JOVE has picked a buffer it puts that buffer in a window so you
1323: can see the command's output as it is running. If there is only one
1324: window JOVE will automatically make another one. Otherwise, JOVE
1325: tries to pick the most convenient one window which isn't the current
1326: one.
1327: .lp
1328: It's not a good idea to type anything while the command is running.
1329: There are two reasons for this:
1330: .ks 1i
1331: .dk "(1)"
1332: JOVE won't see the characters (thus won't execute them) until the
1333: command finishes, so you may forget what you've typed.
1334: .dk "(2)"
1335: Although JOVE won't know what you've typed, it WILL know that you've
1336: typed something, and then it will try to be "smart" and not update the
1337: display until it's interpreted your what you've typed. But, of
1338: course, JOVE won't interpret what you type until the UNIX command
1339: completes, so you're left with the uneasy feeling you get when you
1340: don't know what the hell the computer is doing.
1341: .fb
1342: This is a bug and should be fixed, but probably won't be for a while.
1343: .fe
1344: .ke
1345: .lp
1346: If you want to interrupt the command for some reason (perhaps you
1347: mistyped it,or you changed your mind) you can type C-]. Typing this
1348: inside JOVE while a process is running is the same as type C-C when
1349: you are outside JOVE, namely the process stops in a hurry.
1350: .lp
1351: When the command finishes JOVE puts you back in the window you started
1352: in. Then it prints a message indicating whether or not the command
1353: completed successfully in its (the command's) opinion. That is, if
1354: the command had what it considers and error, JOVE will print an
1355: appropriate message. Interrupting a command with C-] is considered an
1356: error.
1357: .bs "Limitations of Non-Interactive Processes"
1358: The reason these are called non-interactive processes is that you
1359: can't type any input to them; you can't interact with them; they can't
1360: ask you questions because there is no way for you to answer. For
1361: example, you can't run a command interpreter (a shell) with C-X !
1362: because there is no way to type it a command. Remember that JOVE is
1363: listening to your keyboard, not the process in the window, and JOVE
1364: doesn't see what you type until the process dies.
1365: .lp
1366: C-X ! is useful for running commands that do some output and then
1367: exit. For example, it's very useful to use with the C compiler to
1368: catch compilation error messages (see Compiling C Programs), or with
1369: the "grep" commands.
1370: .es
1371: .es
1372: .bs "Interactive Processes -- Run a Shell in a Window"
1373: Some versions of JOVE have the capability of running interative
1374: processes. This is more useful than non-interactive processes for
1375: certain types of jobs:
1376: .ks
1377: .dk "(1)"
1378: You can go off and do some editing while the command is running. This
1379: is useful for commands that do sporadic output and run for fairly long
1380: periods of time.
1381: .dk "(2)"
1382: Unlike non-interactive processes, you can type input to this type. In
1383: addition, you can edit what you type with the power of all the JOVE
1384: commands \fBbefore\fR you send the input to the process. This is a
1385: really important feature, and is especially useful for running a shell
1386: in a window.
1387: .dk "(3)"
1388: Because you can continue with normal editing while one of the
1389: processes is running, you can create a bunch of contexts and manage
1390: them (select them, delete them, or temporarily put them aside) with
1391: JOVE's window and buffer mechanisms.
1392: .ke
1393: .lp
1394: Although we've created an image of processes being attached to
1395: windows, in fact they are attached to buffers. Therefore, once an
1396: i-process is running you can select another buffer into that window,
1397: or if you wish you can delete the window altogether. If you reselect
1398: that buffer later it will be up to date. That is, even though the
1399: buffer wasn't visible it was still receiving output from the process.
1400: You don't have to worry about missing anything when the buffer isn't
1401: visible.
1402: .bs Advantages of Running Processes in JOVE Windows.
1403: There are several advantages to running a shell in a window. What you
1404: type isn't seen immediately by the process ; instead JOVE waits until
1405: you type an entire line before passing it on to the process to read.
1406: This means that before you type Return, all JOVE's editing
1407: capabilities are available for fixing typos on your input line. If
1408: you discover an error at the beginning of the line, rather than
1409: erasing it and starting over, you can simply move to the error,
1410: correct it, move back and continue typing.
1411: .lp
1412: Another feature is that you have the entire history of your session is
1413: a JOVE buffer. You don't have to worry about output from a command
1414: moving past the top of the screen. if you missed some output you can
1415: move back through it with ESC V and other command. In addition, you
1416: can save yourself retyping a command (or a similar one) by sending
1417: edited versions of previous ones.
1418: .es
1419: .bs "Differences between Normal and I-process Buffers"
1420: JOVE behaves differently in several ways when you are in an I-process
1421: buffer. The most obvious one is that Return does different things
1422: depending on both your position in the buffer and on the state of the
1423: process. In the normal case, when point is at the end of the buffer,
1424: Return does what you'd expect: it inserts a line-separator and then
1425: sends the line to the process. If you are somewhere else in the
1426: buffer, possibly positioned at a previous command that you want to
1427: edit, Return will place a copy of that line (with the prompt discarded
1428: if there is one) at the end of the buffer and move you there. Then
1429: you can edit the line and type Return as in the normal case. If the
1430: process has died for some reason, Return does nothing. It doesn't
1431: even insert itself. If that happens unexpectedly, you should type ESC
1432: X list-processes<cr> to get a list of each process and its state. If
1433: your process died abnormally, list-processes may help you figure out
1434: why.
1435: .es
1436: .bs "How to Run a Shell in a Window"
1437: Type ESC X i-shell<cr> to start up a shell. As with C-X !, JOVE will
1438: create a buffer, called \fBshell.1\fR, and select a window for this
1439: new buffer. But unlike C-X ! you will be left in the new window. Now,
1440: the shell process is said to be attached to shell.1, and it is
1441: considered an I-process buffer.
1442: .lp
1443: Needs work.
1444: .es
1445: .es
1446: .es
1447:
1448: .bs "Editing C Programs"
1449: .bs "Compiling Your Program"
1450: .es
1451: .bs "Indentation Commands"
1452: .es
1453: .bs "Parenthesis and Brace Matching"
1454: .es
1455: .bs "C Tags"
1456: .es
1457: .es
1458: .bs "Error Message Parsing"
1459: .es
1460: .bs "Simple Customization"
1461: .bs "Minor Modes"
1462: .es
1463: .bs "Variables"
1464: .es
1465: .bs "Key Re-binding"
1466: .es
1467: .bs "Keyboard Macros"
1468: .es
1469: .bs "Initialization Files"
1470: .es
1471: .es
1472: .TC
1473: .hy 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.