Annotation of 43BSDReno/share/doc/usd/17.jove/jove.1, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.