Annotation of 43BSDReno/contrib/emacs-18.55/info/emacs-3, revision 1.1

1.1     ! root        1: Info file emacs, produced by texinfo-format-buffer   -*-Text-*-
        !             2: from file emacs.tex
        !             3: 
        !             4: This file documents the GNU Emacs editor.
        !             5: 
        !             6: Copyright (C) 1985, 1986 Richard M. Stallman.
        !             7: 
        !             8: Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12: Permission is granted to copy and distribute modified versions of this
        !            13: manual under the conditions for verbatim copying, provided also that the
        !            14: sections entitled "The GNU Manifesto", "Distribution" and "GNU Emacs
        !            15: General Public License" are included exactly as in the original, and
        !            16: provided that the entire resulting derived work is distributed under the
        !            17: terms of a permission notice identical to this one.
        !            18: 
        !            19: Permission is granted to copy and distribute translations of this manual
        !            20: into another language, under the above conditions for modified versions,
        !            21: except that the sections entitled "The GNU Manifesto", "Distribution"
        !            22: and "GNU Emacs General Public License" may be included in a translation
        !            23: approved by the author instead of in the original English.
        !            24: 
        !            25: 
        !            26: File: emacs  Node: Using Region, Prev: Setting Mark, Up: Mark, Next: Marking Objects
        !            27: 
        !            28: Operating on the Region
        !            29: =======================
        !            30: 
        !            31:   Once you have created an active region, you can do many things to
        !            32: the text in it:
        !            33:    * Kill it with `C-w' (*Note Killing::).
        !            34:    * Save it in a register with `C-x x' (*Note Registers::).
        !            35:    * Save it in a buffer or a file (*Note Accumulating Text::).
        !            36:    * Convert case with `C-x C-l' or `C-x C-u' (*Note Case::).
        !            37:    * Evaluate it as Lisp code with `M-x eval-region' (*Note Lisp Eval::).
        !            38:    * Fill it as text with `M-g' (*Note Filling::).
        !            39:    * Print hardcopy with `M-x print-region' (*Note Hardcopy::).
        !            40:    * Indent it with `C-x TAB' or `C-M-\' (*Note Indentation::).
        !            41: 
        !            42: 
        !            43: File: emacs  Node: Marking Objects, Prev: Using Region, Up: Mark, Next: Mark Ring
        !            44: 
        !            45: Commands to Mark Textual Objects
        !            46: ================================
        !            47: 
        !            48:   There are commands for placing point and the mark around a textual
        !            49: object such as a word, list, paragraph or page.
        !            50: 
        !            51: `M-@'     
        !            52:      Set mark after end of next word (`mark-word').  This command and
        !            53:      the following one do not move point.
        !            54: `C-M-@'     
        !            55:      Set mark after end of next Lisp expression (`mark-sexp').
        !            56: `M-h'     
        !            57:      Put region around current paragraph (`mark-paragraph').
        !            58: `C-M-h'     
        !            59:      Put region around current Lisp defun (`mark-defun').
        !            60: `C-x h'     
        !            61:      Put region around entire buffer (`mark-whole-buffer').
        !            62: `C-x C-p'     
        !            63:      Put region around current page (`mark-page').
        !            64: 
        !            65: `M-@' (`mark-word') puts the mark at the end of the next word,
        !            66: while `C-M-@' (`mark-sexp') puts it at the end of the next Lisp
        !            67: expression.  These characters allow you to save a little typing or
        !            68: redisplay, sometimes.
        !            69: 
        !            70:    Other commands set both point and mark, to delimit an object in the
        !            71: buffer.  `M-h' (`mark-paragraph') moves point to the beginning of
        !            72: the paragraph that surrounds or follows point, and puts the mark at the end
        !            73: of that paragraph (*Note Paragraphs::).  `M-h' does all that's
        !            74: necessary if you wish to indent, case-convert, or kill a whole paragraph.
        !            75: `C-M-h' (`mark-defun') similarly puts point before and the mark
        !            76: after the current or following defun (*Note Defuns::).  `C-x C-p'
        !            77: (`mark-page') puts point before the current page (or the next or
        !            78: previous, according to the argument), and mark at the end (*Note Pages::).
        !            79: The mark goes after the terminating page delimiter (to include it), while
        !            80: point goes after the preceding page delimiter (to exclude it).  Finally,
        !            81: `C-x h' (`mark-whole-buffer') sets up the entire buffer as the
        !            82: region, by putting point at the beginning and the mark at the end.
        !            83: 
        !            84: 
        !            85: File: emacs  Node: Mark Ring, Prev: Marking Objects, Up: Mark
        !            86: 
        !            87: The Mark Ring
        !            88: =============
        !            89: 
        !            90:   Aside from delimiting the region, the mark is also useful for remembering
        !            91: a spot that you may want to go back to.  To make this feature more useful,
        !            92: Emacs remembers 16 previous locations of the mark, in the "mark ring".
        !            93: Most commands that set the mark push the old mark onto this ring.  To
        !            94: return to a marked location, use `C-u C-SPC' (or `C-u C-@'); this is
        !            95: the command `set-mark-command' given a numeric argument.  It moves
        !            96: point to where the mark was, and restores the mark from the ring of former
        !            97: marks.  So repeated use of this command moves point to all of the old marks
        !            98: on the ring, one by one.  The marks you see go to the end of the ring,
        !            99: so no marks are lost.
        !           100: 
        !           101:   Each buffer has its own mark ring.  All editing commands use the current
        !           102: buffer's mark ring.  In particular, `C-u C-SPC' always stays in
        !           103: the same buffer.
        !           104: 
        !           105:   Many commands that can move long distances, such as `M-<'
        !           106: (`beginning-of-buffer'), start by setting the mark and saving the old
        !           107: mark on the mark ring.  This is to make it easier for you to move back
        !           108: later.  Searches do this except when they do not actually move point.  You
        !           109: can tell when a command sets the mark because `Mark Set' is printed in
        !           110: the echo area.
        !           111: 
        !           112:   The variable `mark-ring-max' is the maximum number of entries to
        !           113: keep in the mark ring.  If that many entries exist and another one is
        !           114: pushed, the last one in the list is discarded.  Repeating `C-u
        !           115: C-SPC' circulates through the limited number of entries that are
        !           116: currently in the ring.
        !           117: 
        !           118:   The variable `mark-ring' holds the mark ring itself, as a list of
        !           119: marker objects in the order most recent first.  This variable is local
        !           120: in every buffer.
        !           121: 
        !           122: 
        !           123: 
        !           124: File: emacs  Node: Killing, Prev: Mark, Up: Top, Next: Yanking
        !           125: 
        !           126: Deletion and Killing
        !           127: ====================
        !           128: 
        !           129:   Most commands which erase text from the buffer save it so that you can
        !           130: get it back if you change your mind, or move or copy it to other parts of
        !           131: the buffer.  These commands are known as "kill" commands.  The rest of
        !           132: the commands that erase text do not save it; they are known as "delete"
        !           133: commands.  (This distinction is made only for erasure of text in the
        !           134: buffer.)
        !           135: 
        !           136:   The delete commands include `C-d' (`delete-char') and DEL
        !           137: (`delete-backward-char'), which delete only one character at a time, and
        !           138: those commands that delete only spaces or newlines.  Commands that can
        !           139: destroy significant amounts of nontrivial data generally kill.  The
        !           140: commands' names and individual descriptions use the words `kill' and
        !           141: `delete' to say which they do.  If you do a kill or delete command by
        !           142: mistake, you can use the `C-x u' (`undo') command to undo it (*Note
        !           143: Undo::).
        !           144: 
        !           145: 
        !           146: Deletion
        !           147: --------
        !           148: 
        !           149: `C-d'     
        !           150:      Delete next character (`delete-char').
        !           151: `DEL'     
        !           152:      Delete previous character (`delete-backward-char').
        !           153: `M-\'     
        !           154:      Delete spaces and tabs around point (`delete-horizontal-space').
        !           155: `M-SPC'     
        !           156:      Delete spaces and tabs around point, leaving one space
        !           157:      (`just-one-space').
        !           158: `C-x C-o'     
        !           159:      Delete blank lines around the current line (`delete-blank-lines').
        !           160: `M-^'     
        !           161:      Join two lines by deleting the intervening newline, and any indentation
        !           162:      following it (`delete-indentation').
        !           163: 
        !           164:   The most basic delete commands are `C-d' (`delete-char') and
        !           165: DEL (`delete-backward-char').  `C-d' deletes the character
        !           166: after point, the one the cursor is "on top of".  Point doesn't move.
        !           167: DEL deletes the character before the cursor, and moves point back.
        !           168: Newlines can be deleted like any other characters in the buffer; deleting a
        !           169: newline joins two lines.  Actually, `C-d' and DEL aren't always
        !           170: delete commands; if given an argument, they kill instead, since they can
        !           171: erase more than one character this way.
        !           172: 
        !           173:   The other delete commands are those which delete only formatting
        !           174: characters: spaces, tabs and newlines.  `M-\' (`delete-horizontal-space')
        !           175: deletes all the spaces and tab characters before and after point.
        !           176: `M-SPC' (`just-one-space') does likewise but leaves a single
        !           177: space after point, regardless of the number of spaces that existed
        !           178: previously (even zero).
        !           179: 
        !           180:   `C-x C-o' (`delete-blank-lines') deletes all blank lines after
        !           181: the current line, and if the current line is blank deletes all blank lines
        !           182: preceding the current line as well (leaving one blank line, the current
        !           183: line).  `M-^' (`delete-indentation') joins the current line and
        !           184: the previous line, or the current line and the next line if given an
        !           185: argument, by deleting a newline and all surrounding spaces, possibly
        !           186: leaving a single space.  *Note M-^: Indentation.
        !           187: 
        !           188: 
        !           189: Killing by Lines
        !           190: ----------------
        !           191: 
        !           192: `C-k'     
        !           193:      Kill rest of line or one or more lines (`kill-line').
        !           194: 
        !           195:   The simplest kill command is `C-k'.  If given at the beginning of a
        !           196: line, it kills all the text on the line, leaving it blank.  If given on a
        !           197: blank line, the blank line disappears.  As a consequence, if you go to the
        !           198: front of a non-blank line and type `C-k' twice, the line disappears
        !           199: completely.
        !           200: 
        !           201:   More generally, `C-k' kills from point up to the end of the line,
        !           202: unless it is at the end of a line.  In that case it kills the newline
        !           203: following the line, thus merging the next line into the current one.
        !           204: Invisible spaces and tabs at the end of the line are ignored when deciding
        !           205: which case applies, so if point appears to be at the end of the line, you
        !           206: can be sure the newline will be killed.
        !           207: 
        !           208:   If `C-k' is given a positive argument, it kills that many lines and
        !           209: the newlines that follow them (however, text on the current line before
        !           210: point is spared).  With a negative argument, it kills back to a number of
        !           211: line beginnings.  An argument of -2 means kill back to the second line
        !           212: beginning.  If point is at the beginning of a line, that line beginning
        !           213: doesn't count, so `C-u - 2 C-k' with point at the front of a line kills
        !           214: the two previous lines.
        !           215: 
        !           216:   `C-k' with an argument of zero kills all the text before point on the
        !           217: current line.
        !           218: 
        !           219: 
        !           220: Other Kill Commands
        !           221: -------------------
        !           222: 
        !           223: `C-w'     
        !           224:      Kill region (from point to the mark) (`kill-region').
        !           225:      *Note Words::.
        !           226: `M-d'     
        !           227:      Kill word (`kill-word').
        !           228: `M-DEL'     
        !           229:      Kill word backwards (`backward-kill-word').
        !           230: `C-x DEL'     
        !           231:      Kill back to beginning of sentence (`backward-kill-sentence').
        !           232:      *Note Sentences::.
        !           233: `M-k'     
        !           234:      Kill to end of sentence (`kill-sentence').
        !           235: `C-M-k'     
        !           236:      Kill sexp (`kill-sexp').  *Note Lists::.
        !           237: `M-z CHAR'     
        !           238:      Kill up to next occurrence of CHAR (`zap-to-char').
        !           239: 
        !           240:   A kill command which is very general is `C-w' (`kill-region'),
        !           241: which kills everything between point and the mark.  With this command, you
        !           242: can kill any contiguous sequence of characters, if you first set the mark
        !           243: at one end of them and go to the other end.
        !           244: 
        !           245:   A convenient way of killing is combined with searching: `M-z'
        !           246: (`zap-to-char') reads a character and kills from point up to (but not
        !           247: including) the next occurrence of that character in the buffer.  If there
        !           248: is no next occurrence, killing goes to the end of the buffer.  A numeric
        !           249: argument acts as a repeat count.  A negative argument means to search
        !           250: backward and kill text before point.
        !           251: 
        !           252:   Other syntactic units can be killed: words, with `M-DEL' and `M-d' (*Note
        !           253: Words::); sexps, with `C-M-k' (*Note Lists::); and sentences, with `C-x
        !           254: DEL' and `M-k' (*Note Sentences::).
        !           255: 
        !           256: 
        !           257: File: emacs  Node: Yanking, Prev: Killing, Up: Top, Next: Accumulating Text
        !           258: 
        !           259: Yanking
        !           260: =======
        !           261: 
        !           262:   "Yanking" is getting back text which was killed.  This is what some
        !           263: systems call "pasting".  The usual way to move or copy text is to kill it
        !           264: and then yank it one or more times.
        !           265: 
        !           266: `C-y'     
        !           267:      Yank last killed text (`yank').
        !           268: `M-y'     
        !           269:      Replace re-inserted killed text with the previously killed text
        !           270:      (`yank-pop').
        !           271: `M-w'     
        !           272:      Save region as last killed text without actually killing it
        !           273:      (`copy-region-as-kill').
        !           274: `C-M-w'     
        !           275:      Append next kill to last batch of killed text (`append-next-kill').
        !           276: 
        !           277: * Menu:
        !           278: 
        !           279: * Kill Ring::       Where killed text is stored.  Basic yanking.
        !           280: * Appending Kills:: Several kills in a row all yank together.
        !           281: * Earlier Kills::   Yanking something killed some time ago.
        !           282: 
        !           283: 
        !           284: File: emacs  Node: Kill Ring, Prev: Yanking, Up: Yanking, Next: Appending Kills
        !           285: 
        !           286: The Kill Ring
        !           287: -------------
        !           288: 
        !           289:   All killed text is recorded in the "kill ring", a list of blocks of
        !           290: text that have been killed.  There is only one kill ring, used in all
        !           291: buffers, so you can kill text in one buffer and yank it in another buffer.
        !           292: This is the usual way to move text from one file to another.
        !           293: (*Note Accumulating Text::, for some other ways.)
        !           294: 
        !           295:   The command `C-y' (`yank') reinserts the text of the most recent
        !           296: kill.  It leaves the cursor at the end of the text.  It sets the mark at
        !           297: the beginning of the text.  *Note Mark::.
        !           298: 
        !           299:   `C-u C-y' leaves the cursor in front of the text, and sets the mark
        !           300: after it.  This is only if the argument is specified with just a `C-u',
        !           301: precisely.  Any other sort of argument, including `C-u' and digits, has
        !           302: an effect described below (under "Yanking Earlier Kills").
        !           303: 
        !           304:   If you wish to copy a block of text, you might want to use `M-w'
        !           305: (`copy-region-as-kill'), which copies the region into the kill ring
        !           306: without removing it from the buffer.  This is approximately equivalent to
        !           307: `C-w' followed by `C-y', except that `M-w' does not mark the
        !           308: buffer as "modified" and does not temporarily change the screen.
        !           309: 
        !           310: 
        !           311: File: emacs  Node: Appending Kills, Prev: Kill Ring, Up: Yanking, Next: Earlier Kills
        !           312: 
        !           313: Appending Kills
        !           314: ---------------
        !           315: 
        !           316:   Normally, each kill command pushes a new block onto the kill ring.
        !           317: However, two or more kill commands in a row combine their text into a
        !           318: single entry, so that a single `C-y' gets it all back as it was before
        !           319: it was killed.  This means that you don't have to kill all the text in one
        !           320: command; you can keep killing line after line, or word after word, until
        !           321: you have killed it all, and you can still get it all back at once.  (Thus
        !           322: we join television in leading people to kill thoughtlessly.)
        !           323: 
        !           324:   Commands that kill forward from point add onto the end of the previous
        !           325: killed text.  Commands that kill backward from point add onto the
        !           326: beginning.  This way, any sequence of mixed forward and backward kill
        !           327: commands puts all the killed text into one entry without rearrangement.
        !           328: Numeric arguments do not break the sequence of appending kills.  For
        !           329: example, suppose the buffer contains
        !           330: 
        !           331:      This is the first
        !           332:      line of sample text
        !           333:      and here is the third.
        !           334: 
        !           335: with point at the beginning of the second line.  If you type `C-k C-u 2
        !           336: M-DEL C-k', the first `C-k' kills the text `line of sample
        !           337: text', `C-u 2 M-DEL' kills `the first' with the newline that
        !           338: followed it, and the second `C-k' kills the newline after the second
        !           339: line.  The result is that the buffer contains `This is and here is the
        !           340: third.' and a single kill entry contains `the firstRETline of
        !           341: sample textRET'---all the killed text, in its original order.
        !           342: 
        !           343:   If a kill command is separated from the last kill command by other
        !           344: commands (not just numeric arguments), it starts a new entry on the kill
        !           345: ring.  But you can force it to append by first typing the command `C-M-w'
        !           346: (`append-next-kill') in front of it.  The `C-M-w' tells the following
        !           347: command, if it is a kill command, to append the text it kills to the last
        !           348: killed text, instead of starting a new entry.  With `C-M-w', you can kill
        !           349: several separated pieces of text and accumulate them to be yanked back in
        !           350: one place.
        !           351: 
        !           352: 
        !           353: File: emacs  Node: Earlier Kills, Prev: Appending Kills, Up: Yanking
        !           354: 
        !           355: Yanking Earlier Kills
        !           356: ---------------------
        !           357: 
        !           358:   To recover killed text that is no longer the most recent kill, you need
        !           359: the `Meta-y' (`yank-pop') command.  `M-y' can be used only after a `C-y' or
        !           360: another `M-y'.  It takes the text previously yanked and replaces it with
        !           361: the text from an earlier kill.  So, to recover the text of the
        !           362: next-to-the-last kill, you first use `C-y' to recover the last kill, and
        !           363: then use `M-y' to replace it with the previous kill.
        !           364: 
        !           365:   You can think in terms of a "last yank" pointer which points at an item
        !           366: in the kill ring.  Each time you kill, the "last yank" pointer moves to
        !           367: the newly made item at the front of the ring.  `C-y' yanks the item
        !           368: which the "last yank" pointer points to.  `M-y' moves the "last
        !           369: yank" pointer to a different item, and the text in the buffer changes to
        !           370: match.  Enough `M-y' commands can move the pointer to any item in the
        !           371: ring, so you can get any item into the buffer.  Eventually the pointer
        !           372: reaches the end of the ring; the next `M-y' moves it to the first item
        !           373: again.
        !           374: 
        !           375:   Yanking moves the "last yank" pointer around the ring, but it does not
        !           376: change the order of the entries in the ring, which always runs from the
        !           377: most recent kill at the front to the oldest one still remembered.
        !           378: 
        !           379:   `M-y' can take a numeric argument, which tells it how many items to
        !           380: advance the "last yank" pointer by.  A negative argument moves the
        !           381: pointer toward the front of the ring; from the front of the ring, it moves
        !           382: to the last entry and starts moving forward from there.
        !           383: 
        !           384:   Once the text you are looking for is brought into the buffer, you can
        !           385: stop doing `M-y' commands and it will stay there.  It's just a copy of
        !           386: the kill ring item, so editing it in the buffer does not change what's in
        !           387: the ring.  As long as no new killing is done, the "last yank" pointer
        !           388: remains at the same place in the kill ring, so repeating `C-y' will
        !           389: yank another copy of the same old kill.
        !           390: 
        !           391:   If you know how many `M-y' commands it would take to find the
        !           392: text you want, you can yank that text in one step using `C-y' with
        !           393: a numeric argument.  `C-y' with an argument greater than one
        !           394: restores the text the specified number of entries back in the kill
        !           395: ring.  Thus, `C-u 2 C-y' gets the next to the last block of killed
        !           396: text.  It is equivalent to `C-y M-y'.  `C-y' with a numeric
        !           397: argument starts counting from the "last yank" pointer, and sets the
        !           398: "last yank" pointer to the entry that it yanks.
        !           399: 
        !           400:   The length of the kill ring is controlled by the variable
        !           401: `kill-ring-max'; no more than that many blocks of killed text are
        !           402: saved.
        !           403: 
        !           404: 
        !           405: File: emacs  Node: Accumulating Text, Prev: Yanking, Up: Top, Next: Rectangles
        !           406: 
        !           407: Accumulating Text
        !           408: =================
        !           409: 
        !           410:   Usually we copy or move text by killing it and yanking it, but there are
        !           411: other ways that are useful for copying one block of text in many places, or
        !           412: for copying many scattered blocks of text into one place.
        !           413: 
        !           414:   You can accumulate blocks of text from scattered locations either into a
        !           415: buffer or into a file if you like.  These commands are described here.  You
        !           416: can also use Emacs registers for storing and accumulating text.
        !           417: *Note Registers::.
        !           418: 
        !           419: `C-x a'     
        !           420:      Append region to contents of specified buffer (`append-to-buffer').
        !           421: `M-x prepend-to-buffer'     
        !           422:      Prepend region to contents of specified buffer.
        !           423: `M-x copy-to-buffer'     
        !           424:      Copy region into specified buffer, deleting that buffer's old contents.
        !           425: `M-x insert-buffer'     
        !           426:      Insert contents of specified buffer into current buffer at point.
        !           427: `M-x append-to-file'     
        !           428:      Append region to contents of specified file, at the end.
        !           429: 
        !           430:   To accumulate text into a buffer, use the command `C-x a BUFFERNAME'
        !           431: (`append-to-buffer'), which inserts a copy of the region into the
        !           432: buffer BUFFERNAME, at the location of point in that buffer.  If there
        !           433: is no buffer with that name, one is created.  If you append text into a
        !           434: buffer which has been used for editing, the copied text goes into the
        !           435: middle of the text of the buffer, wherever point happens to be in it.
        !           436: 
        !           437:   Point in that buffer is left at the end of the copied text, so successive
        !           438: uses of `C-x a' accumulate the text in the specified buffer in the same
        !           439: order as they were copied.  Strictly speaking, `C-x a' does not always
        !           440: append to the text already in the buffer; but if `C-x a' is the only
        !           441: command used to alter a buffer, it does always append to the existing text
        !           442: because point is always at the end.
        !           443: 
        !           444:   `M-x prepend-to-buffer' is just like `C-x a' except that point in
        !           445: the other buffer is left before the copied text, so successive prependings
        !           446: add text in reverse order.  `M-x copy-to-buffer' is similar except that
        !           447: any existing text in the other buffer is deleted, so the buffer is left
        !           448: containing just the text newly copied into it.
        !           449: 
        !           450:   You can retrieve the accumulated text from that buffer with `M-x
        !           451: insert-buffer'; this too takes BUFFERNAME as an argument.  It inserts
        !           452: a copy of the text in buffer BUFFERNAME into the selected buffer.
        !           453: You could alternatively select the other buffer for editing, perhaps moving
        !           454: text from it by killing or with `C-x a'.  *Note Buffers::, for
        !           455: background information on buffers.
        !           456: 
        !           457:   Instead of accumulating text within Emacs, in a buffer, you can append
        !           458: text directly into a file with `M-x append-to-file', which takes
        !           459: FILE-NAME as an argument.  It adds the text of the region to the end
        !           460: of the specified file.  The file is changed immediately on disk. This
        !           461: command is normally used with files that are not being visited in
        !           462: Emacs.  Using it on a file that Emacs is visiting can produce confusing
        !           463: results, because the text inside Emacs for that file will not change
        !           464: while the file itself changes.
        !           465: 
        !           466: 
        !           467: File: emacs  Node: Rectangles, Prev: Accumulating Text, Up: Top, Next: Registers
        !           468: 
        !           469: Rectangles
        !           470: ==========
        !           471: 
        !           472:   The rectangle commands affect rectangular areas of the text: all the
        !           473: characters between a certain pair of columns, in a certain range of lines.
        !           474: Commands are provided to kill rectangles, yank killed rectangles, clear
        !           475: them out, or delete them.  Rectangle commands are useful with text in
        !           476: multicolumnar formats, such as perhaps code with comments at the right,
        !           477: or for changing text into or out of such formats.
        !           478: 
        !           479:   When you must specify a rectangle for a command to work on, you do
        !           480: it by putting the mark at one corner and point at the opposite corner.
        !           481: The rectangle thus specified is called the "region-rectangle"
        !           482: because it is controlled about the same way the region is controlled.
        !           483: But remember that a given combination of point and mark values can be
        !           484: interpreted either as specifying a region or as specifying a
        !           485: rectangle; it is up to the command that uses them to choose the
        !           486: interpretation.
        !           487: 
        !           488: `M-x delete-rectangle'     
        !           489:      Delete the text of the region-rectangle, moving any following text on
        !           490:      each line leftward to the left edge of the region-rectangle.
        !           491: `M-x kill-rectangle'     
        !           492:      Similar, but also save the contents of the region-rectangle as the
        !           493:      "last killed rectangle".
        !           494: `M-x yank-rectangle'     
        !           495:      Yank the last killed rectangle with its upper left corner at point.
        !           496: `M-x open-rectangle'     
        !           497:      Insert blank space to fill the space of the region-rectangle.
        !           498:      The previous contents of the region-rectangle are pushed rightward.
        !           499: `M-x clear-rectangle'     
        !           500:      Clear the region-rectangle by replacing its contents with spaces.
        !           501: 
        !           502:   The rectangle operations fall into two classes: commands deleting and
        !           503: moving rectangles, and commands for blank rectangles.
        !           504: 
        !           505:   There are two ways to get rid of the text in a rectangle: you can discard
        !           506: the text (delete it) or save it as the "last killed" rectangle.  The
        !           507: commands for these two ways are `M-x delete-rectangle' and `M-x
        !           508: kill-rectangle'.  In either case, the portion of each line that falls inside
        !           509: the rectangle's boundaries is deleted, causing following text (if any) on
        !           510: the line to move left.
        !           511: 
        !           512:   Note that "killing" a rectangle is not killing in the usual sense; the
        !           513: rectangle is not stored in the kill ring, but in a special place that
        !           514: can only record the most recent rectangle killed.  This is because yanking
        !           515: a rectangle is so different from yanking linear text that different yank
        !           516: commands have to be used and yank-popping is hard to make sense of.
        !           517: 
        !           518:   Inserting a rectangle is the opposite of deleting one.  All you need to
        !           519: specify is where to put the upper left corner; that is done by putting
        !           520: point there.  The rectangle's first line is inserted there, the rectangle's
        !           521: second line is inserted at a point one line vertically down, and so on.
        !           522: The number of lines affected is determined by the height of the saved
        !           523: rectangle.
        !           524: 
        !           525:   To insert the last killed rectangle, type `M-x yank-rectangle'.
        !           526: This can be used to convert single-column lists into double-column
        !           527: lists; kill the second half of the list as a rectangle and then
        !           528: yank it beside the first line of the list.
        !           529: 
        !           530:   There are two commands for working with blank rectangles: `M-x
        !           531: clear-rectangle' to blank out existing text, and `M-x open-rectangle'
        !           532: to insert a blank rectangle.  Clearing a rectangle is equivalent to
        !           533: deleting it and then inserting as blank rectangle of the same size.
        !           534: 
        !           535:   Rectangles can also be copied into and out of registers.
        !           536: *Note Rectangle Registers: RegRect.
        !           537: 
        !           538: 
        !           539: File: emacs  Node: Registers, Prev: Rectangles, Up: Top, Next: Display
        !           540: 
        !           541: Registers
        !           542: *********
        !           543: 
        !           544:   Emacs "registers" are places you can save text or positions for
        !           545: later use.  Text saved in a register can be copied into the buffer
        !           546: once or many times; a position saved in a register is used by moving
        !           547: point to that position.  Rectangles can also be copied into and out of
        !           548: registers (*Note Rectangles::).
        !           549: 
        !           550:   Each register has a name, which is a single character.  A register can
        !           551: store either a piece of text or a position or a rectangle, but only one
        !           552: thing at any given time.  Whatever you store in a register remains
        !           553: there until you store something else in that register.
        !           554: 
        !           555: * Menu:
        !           556: 
        !           557: * RegPos::    Saving positions in registers.
        !           558: * RegText::   Saving text in registers.
        !           559: * RegRect::   Saving rectangles in registers.
        !           560: 
        !           561: `M-x view-register RET R'     
        !           562:      Display a description of what register R contains.
        !           563: 
        !           564:   `M-x view-register' reads a register name as an argument and then
        !           565: displays the contents of the specified register.
        !           566: 
        !           567: 
        !           568: File: emacs  Node: RegPos, Prev: Registers, Up: Registers, Next: RegText
        !           569: 
        !           570: Saving Positions in Registers
        !           571: =============================
        !           572: 
        !           573:   Saving a position records a spot in a buffer so that you can move
        !           574: back there later.  Moving to a saved position reselects the buffer
        !           575: and moves point to the spot.
        !           576: 
        !           577: `C-x / R'     
        !           578:      Save location of point in register R (`point-to-register').
        !           579: `C-x j R'     
        !           580:      Jump to the location saved in register R (`register-to-point').
        !           581: 
        !           582:   To save the current location of point in a register, choose a name R and
        !           583: type `C-x / R'.  The register R retains the location thus saved until you
        !           584: store something else in that register.
        !           585: 
        !           586:   The command `C-x j R' moves point to the location recorded
        !           587: in register R.  The register is not affected; it continues to
        !           588: record the same location.  You can jump to the same position using the
        !           589: same register any number of times.
        !           590: 
        !           591: 
        !           592: File: emacs  Node: RegText, Prev: RegPos, Up: Registers, Next: RegRect
        !           593: 
        !           594: Saving Text in Registers
        !           595: ========================
        !           596: 
        !           597:   When you want to insert a copy of the same piece of text frequently, it
        !           598: may be impractical to use the kill ring, since each subsequent kill moves
        !           599: the piece of text further down on the ring.  It becomes hard to keep track
        !           600: of what argument is needed to retrieve the same text with `C-y'.  An
        !           601: alternative is to store the text in a register with `C-x x'
        !           602: (`copy-to-register') and then retrieve it with `C-x g'
        !           603: (`insert-register').
        !           604: 
        !           605: `C-x x R'     
        !           606:      Copy region into register R (`copy-to-register').
        !           607: `C-x g R'     
        !           608:      Insert text contents of register R (`insert-register').
        !           609: 
        !           610:   `C-x x R' stores a copy of the text of the region into the
        !           611: register named R.  Given a numeric argument, `C-x x' deletes the
        !           612: text from the buffer as well.
        !           613: 
        !           614:   `C-x g R' inserts in the buffer the text from register R.
        !           615: Normally it leaves point before the text and places the mark after, but
        !           616: with a numeric argument it puts point after the text and the mark before.
        !           617: 
        !           618: 
        !           619: File: emacs  Node: RegRect, Prev: RegText, Up: Registers
        !           620: 
        !           621: Saving Rectangles in Registers
        !           622: ==============================
        !           623: 
        !           624:   A register can contain a rectangle instead of linear text.  The rectangle
        !           625: is represented as a list of strings.  *Note Rectangles::, for basic
        !           626: information on rectangles and how rectangles in the buffer are specified.
        !           627: 
        !           628: `C-x r R'     
        !           629:      Copy the region-rectangle into register R (`copy-region-to-rectangle').
        !           630:      With numeric argument, delete it as well.
        !           631: `C-x g R'     
        !           632:      Insert the rectangle stored in register R (if it contains a
        !           633:      rectangle) (`insert-register').
        !           634: 
        !           635:   The `C-x g' command inserts linear text if the register contains
        !           636: that, or inserts a rectangle if the register contains one.
        !           637: 
        !           638: 
        !           639: File: emacs  Node: Display, Prev: Registers, Up: Top, Next: Search
        !           640: 
        !           641: Controlling the Display
        !           642: ***********************
        !           643: 
        !           644:   Since only part of a large buffer fits in the window, Emacs tries to show
        !           645: the part that is likely to be interesting.  The display control commands
        !           646: allow you to specify which part of the text you want to see.
        !           647: 
        !           648: `C-l'     
        !           649:      Clear screen and redisplay, scrolling the selected window to center
        !           650:      point vertically within it (`recenter').
        !           651: `C-v'     
        !           652:      Scroll forward (a windowful or a specified number of lines) (`scroll-up').
        !           653: `M-v'     
        !           654:      Scroll backward (`scroll-down').
        !           655: `ARG C-l'     
        !           656:      Scroll so point is on line ARG (`recenter').
        !           657: `C-x <'     
        !           658:      Scroll text in current window to the left (`scroll-left').
        !           659: `C-x >'     
        !           660:      Scroll to the right (`scroll-right').
        !           661: `C-x $'     
        !           662:      Make deeply indented lines invisible (`set-selective-display').
        !           663: 
        !           664: * Menu:
        !           665: 
        !           666: * Scrolling::             Moving text up and down in a window.
        !           667: * Horizontal Scrolling::   Moving text left and right in a window.
        !           668: * Selective Display::      Hiding lines with lots of indentation.
        !           669: * Display Vars::           Information on variables for customizing display.
        !           670: 
        !           671: 
        !           672: File: emacs  Node: Scrolling, Prev: Display, Up: Display, Next: Horizontal Scrolling
        !           673: 
        !           674: Scrolling
        !           675: =========
        !           676: 
        !           677:   If a buffer contains text that is too large to fit entirely within a
        !           678: window that is displaying the buffer, Emacs shows a contiguous section of
        !           679: the text.  The section shown always contains point.
        !           680: 
        !           681:   "Scrolling" means moving text up or down in the window so that
        !           682: different parts of the text are visible.  Scrolling forward means that text
        !           683: moves up, and new text appears at the bottom.  Scrolling backward moves
        !           684: text down and new text appears at the top.
        !           685: 
        !           686:   Scrolling happens automatically if you move point past the bottom or top
        !           687: of the window.  You can also explicitly request scrolling with the commands
        !           688: in this section.
        !           689: 
        !           690: 
        !           691: `C-l'     
        !           692:      Clear screen and redisplay, scrolling the selected window to center
        !           693:      point vertically within it (`recenter').
        !           694: `C-v'     
        !           695:      Scroll forward (a windowful or a specified number of lines) (`scroll-up').
        !           696: `M-v'     
        !           697:      Scroll backward (`scroll-down').
        !           698: `ARG C-l'     
        !           699:      Scroll so point is on line ARG (`recenter').
        !           700: 
        !           701:   The most basic scrolling command is `C-l' (`recenter') with no
        !           702: argument.  It clears the entire screen and redisplays all windows.  In
        !           703: addition, the selected window is scrolled so that point is halfway down
        !           704: from the top of the window.
        !           705: 
        !           706:   The scrolling commands `C-v' and `M-v' let you move all the text in the
        !           707: window up or down a few lines.  `C-v' (`scroll-up') with an argument shows
        !           708: you that many more lines at the bottom of the window, moving the text and
        !           709: point up together as `C-l' might.  `C-v' with a negative argument shows you
        !           710: more lines at the top of the window.  `Meta-v' (`scroll-down') is like
        !           711: `C-v', but moves in the opposite direction.
        !           712: 
        !           713:   To read the buffer a windowful at a time, use `C-v' with no argument.
        !           714: It takes the last two lines at the bottom of the window and puts them at
        !           715: the top, followed by nearly a whole windowful of lines not previously
        !           716: visible.  If point was in the text scrolled off the top, it moves to the
        !           717: new top of the window.  `M-v' with no argument moves backward with
        !           718: overlap similarly.  The number of lines of overlap across a `C-v' or
        !           719: `M-v' is controlled by the variable `next-screen-context-lines'; by
        !           720: default, it is two.
        !           721: 
        !           722:   Another way to do scrolling is with `C-l' with a numeric argument.
        !           723: `C-l' does not clear the screen when given an argument; it only scrolls
        !           724: the selected window.  With a positive argument N, it repositions text
        !           725: to put point N lines down from the top.  An argument of zero puts
        !           726: point on the very top line.  Point does not move with respect to the text;
        !           727: rather, the text and point move rigidly on the screen.  `C-l' with a
        !           728: negative argument puts point that many lines from the bottom of the window.
        !           729: For example, `C-u - 1 C-l' puts point on the bottom line, and `C-u
        !           730: - 5 C-l' puts it five lines from the bottom.  Just `C-u' as argument,
        !           731: as in `C-u C-l', scrolls point to the center of the screen.
        !           732: 
        !           733:   Scrolling happens automatically if point has moved out of the visible
        !           734: portion of the text when it is time to display.  Usually the scrolling is
        !           735: done so as to put point vertically centered within the window.  However, if
        !           736: the variable `scroll-step' has a nonzero value, an attempt is made to
        !           737: scroll the buffer by that many lines; if that is enough to bring point back
        !           738: into visibility, that is what is done.
        !           739: 
        !           740: 
        !           741: File: emacs  Node: Horizontal Scrolling, Prev: Scrolling, Up: Display
        !           742: 
        !           743: Horizontal Scrolling
        !           744: ====================
        !           745: 
        !           746: 
        !           747: `C-x <'     
        !           748:      Scroll text in current window to the left (`scroll-left').
        !           749: `C-x >'     
        !           750:      Scroll to the right (`scroll-right').
        !           751: 
        !           752:   The text in a window can also be scrolled horizontally.  This means that
        !           753: each line of text is shifted sideways in the window, and one or more
        !           754: characters at the beginning of each line are not displayed at all.  When a
        !           755: window has been scrolled horizontally in this way, text lines are truncated
        !           756: rather than continued (*Note Continuation Lines::), with a `$' appearing
        !           757: in the first column when there is text truncated to the left, and in the
        !           758: last column when there is text truncated to the right.
        !           759: 
        !           760:   The command `C-x <' (`scroll-left') scrolls the selected window
        !           761: to the left by N columns with argument N.  With no argument, it scrolls
        !           762: by almost the full width of the window (two columns less, to be precise).
        !           763: `C-x >' (`scroll-right') scrolls similarly to the right.
        !           764: The window cannot be scrolled any farther to the right once it is
        !           765: displaying normally (with each line starting at the window's left margin);
        !           766: attempting to do so has no effect.
        !           767: 
        !           768: 
        !           769: File: emacs  Node: Selective Display, Prev: Display, Up: Display, Next: Display Vars
        !           770: 
        !           771: Selective Display
        !           772: =================
        !           773: 
        !           774:   Emacs has the ability to hide lines indented more than a certain number
        !           775: of columns (you specify how many columns).  You can use this to get an
        !           776: overview of a part of a program.
        !           777: 
        !           778:   To hide lines, type `C-x $' (`set-selective-display') with a numeric
        !           779: argument N.  (*Note Arguments::, for how to give the argument.)  Then lines
        !           780: with at least N columns of indentation disappear from the screen.  The only
        !           781: indication of their presence is that three dots (`...') appear at the end
        !           782: of each visible line that is followed by one or more invisible ones.
        !           783: 
        !           784:   The invisible lines are still present in the buffer, and most editing
        !           785: commands see them as usual, so it is very easy to put point in the middle
        !           786: of invisible text.  When this happens, the cursor appears at the end of the
        !           787: previous line, after the three dots.  If point is at the end of the visible
        !           788: line, before the newline that ends it, the cursor appears before the three
        !           789: dots.
        !           790: 
        !           791:   The commands `C-n' and `C-p' move across the invisible lines as if they
        !           792: were not there.
        !           793: 
        !           794:   To make everything visible again, type `C-x $' with no argument.
        !           795: 
        !           796: 
        !           797: File: emacs  Node: Display Vars, Prev: Selective Display, Up: Display
        !           798: 
        !           799: Variables Controlling Display
        !           800: =============================
        !           801:  
        !           802:   This section contains information for customization only.  Beginning
        !           803: users should skip it.
        !           804: 
        !           805:   The variable `mode-line-inverse-video' controls whether the mode
        !           806: line is displayed in inverse video (assuming the terminal supports it);
        !           807: `nil' means don't do so.  *Note Mode Line::.
        !           808: 
        !           809:   If the variable `inverse-video' is non-`nil', Emacs attempts
        !           810: to invert all the lines of the display from what they normally are.
        !           811: 
        !           812:   If the variable `visible-bell' is non-`nil', Emacs attempts to make the
        !           813: whole screen blink when it would normally make an audible bell sound.  This
        !           814: variable has no effect if your terminal does not have a way to make the
        !           815: screen blink.
        !           816: 
        !           817:   When you reenter Emacs after suspending, Emacs normally clears the screen
        !           818: and redraws the entire display.  On some terminals with more than one page
        !           819: of memory, it is possible to arrange the termcap entry so that the
        !           820: `ti' and `te' strings (output to the terminal when Emacs is
        !           821: entered and exited, respectively) switch between pages of memory so as to
        !           822: use one page for Emacs and another page for other output.  Then you might
        !           823: want to set the variable `no-redraw-on-reenter' non-`nil' so that
        !           824: Emacs will assume, when resumed, that the screen page it is using still
        !           825: contains what Emacs last wrote there.
        !           826: 
        !           827:   The variable `echo-keystrokes' controls the echoing of multi-character
        !           828: keys; its value is the number of seconds of pause required to cause echoing
        !           829: to start, or zero meaning don't echo at all.  *Note Echo Area::.
        !           830: 
        !           831:   If the variable `ctl-arrow' is `nil', control characters in the
        !           832: buffer are displayed with octal escape sequences, all except newline and
        !           833: tab.  Altering the value of `ctl-arrow' makes it local to the current
        !           834: buffer; until that time, the default value is in effect.  The default is
        !           835: initially `t'.  *Note Locals::.
        !           836: 
        !           837:   Normally, a tab character in the buffer is displayed as whitespace which
        !           838: extends to the next display tab stop position, and display tab stops come
        !           839: at intervals equal to eight spaces.  The number of spaces per tab is
        !           840: controlled by the variable `tab-width', which is made local by
        !           841: changing it, just like `ctl-arrow'.  Note that how the tab character
        !           842: in the buffer is displayed has nothing to do with the definition of
        !           843: TAB as a command.
        !           844: 
        !           845:   If you set the variable `selective-display-ellipses' to `nil',
        !           846: the three dots do not appear at the end of a line that precedes invisible
        !           847: lines.  Then there is no visible indication of the invisible lines.
        !           848: This variable too becomes local automatically when set.
        !           849: 
        !           850: 
        !           851: File: emacs  Node: Search, Prev: Display, Up: Top, Next: Fixit
        !           852: 
        !           853: Searching and Replacement
        !           854: *************************
        !           855: 
        !           856:   Like other editors, Emacs has commands for searching for occurrences of
        !           857: a string.  The principal search command is unusual in that it is
        !           858: "incremental"; it begins to search before you have finished typing the
        !           859: search string.  There are also nonincremental search commands more like
        !           860: those of other editors.
        !           861: 
        !           862:   Besides the usual `replace-string' command that finds all
        !           863: occurrences of one string and replaces them with another, Emacs has a fancy
        !           864: replacement command called `query-replace' which asks interactively
        !           865: which occurrences to replace.
        !           866: 
        !           867: * Menu:
        !           868: 
        !           869: * Incremental Search::     Search happens as you type the string.
        !           870: * Nonincremental Search::  Specify entire string and then search.
        !           871: * Word Search::            Search for sequence of words.
        !           872: * Regexp Search::          Search for match for a regexp.
        !           873: * Regexps::                Syntax of regular expressions.
        !           874: * Search Case::            To ignore case while searching, or not.
        !           875: * Replace::                Search, and replace some or all matches.
        !           876: * Other Repeating Search:: Operating on all matches for some regexp.
        !           877: 
        !           878: 
        !           879: File: emacs  Node: Incremental Search, Prev: Search, Up: Search, Next: Nonincremental Search
        !           880: 
        !           881: Incremental Search
        !           882: ==================
        !           883: 
        !           884:   An incremental search begins searching as soon as you type the first
        !           885: character of the search string.  As you type in the search string, Emacs
        !           886: shows you where the string (as you have typed it so far) would be found.
        !           887: When you have typed enough characters to identify the place you want, you
        !           888: can stop.  Depending on what you will do next, you may or may not need to
        !           889: terminate the search explicitly with an ESC first.
        !           890: 
        !           891: `C-s'     
        !           892:      Incremental search forward (`isearch-forward').
        !           893: `C-r'     
        !           894:      Incremental search backward (`isearch-backward').
        !           895: 
        !           896:   `C-s' starts an incremental search.  `C-s' reads characters from the
        !           897: keyboard and positions the cursor at the first occurrence of the characters
        !           898: that you have typed.  If you type `C-s' and then `F', the cursor moves
        !           899: right after the first `F'.  Type an `O', and see the cursor move to after
        !           900: the first `FO'.  After another `O', the cursor is after the first `FOO'
        !           901: after the place where you started the search.  Meanwhile, the search string
        !           902: `FOO' has been echoed in the echo area.
        !           903: 
        !           904:   The echo area display ends with three dots when actual searching is going
        !           905: on.  When search is waiting for more input, the three dots are removed.
        !           906: (On slow terminals, the three dots are not displayed.)
        !           907: 
        !           908:   If you make a mistake in typing the search string, you can erase
        !           909: characters with DEL.  Each DEL cancels the last character of search string.
        !           910: This does not happen until Emacs is ready to read another input character;
        !           911: first it must either find, or fail to find, the character you want to
        !           912: erase.  If you do not want to wait for this to happen, use `C-g' as
        !           913: described below.
        !           914: 
        !           915:   When you are satisfied with the place you have reached, you can type
        !           916: ESC, which stops searching, leaving the cursor where the search
        !           917: brought it.  Also, any command not specially meaningful in searches stops
        !           918: the searching and is then executed.  Thus, typing `C-a' would exit the
        !           919: search and then move to the beginning of the line.  ESC is necessary
        !           920: only if the next command you want to type is a printing character,
        !           921: DEL, ESC, or another control character that is special within
        !           922: searches (`C-q', `C-w', `C-r', `C-s' or `C-y').
        !           923: 
        !           924:   Sometimes you search for `FOO' and find it, but not the one you
        !           925: expected to find.  There was a second `FOO' that you forgot about,
        !           926: before the one you were looking for.  In this event, type another `C-s'
        !           927: to move to the next occurrence of the search string.  This can be done any
        !           928: number of times.  If you overshoot, you can cancel some `C-s'
        !           929: characters with DEL.
        !           930: 
        !           931:   After you exit a search, you can search for the same string again by
        !           932: typing just `C-s C-s': the first `C-s' is the key that invokes
        !           933: incremental search, and the second `C-s' means "search again".
        !           934: 
        !           935:   If your string is not found at all, the echo area says `Failing
        !           936: I-Search'.  The cursor is after the place where Emacs found as much of your
        !           937: string as it could.  Thus, if you search for `FOOT', and there is no
        !           938: `FOOT', you might see the cursor after the `FOO' in `FOOL'.
        !           939: At this point there are several things you can do.  If your string was
        !           940: mistyped, you can rub some of it out and correct it.  If you like the place
        !           941: you have found, you can type ESC or some other Emacs command to
        !           942: "accept what the search offered".  Or you can type `C-g', which
        !           943: removes from the search string the characters that could not be found (the
        !           944: `T' in `FOOT'), leaving those that were found (the `FOO' in
        !           945: `FOOT').  A second `C-g' at that point cancels the search
        !           946: entirely, returning point to where it was when the search started.
        !           947: 
        !           948:   If a search is failing and you ask to repeat it by typing another
        !           949: `C-s', it starts again from the beginning of the buffer.  Repeating
        !           950: a failing reverse search with `C-r' starts again from the end.  This
        !           951: is called "wrapping around".  `Wrapped' appears in the search
        !           952: prompt once this has happened.
        !           953: 
        !           954:   The `C-g' "quit" character does special things during searches;
        !           955: just what it does depends on the status of the search.  If the search has
        !           956: found what you specified and is waiting for input, `C-g' cancels the
        !           957: entire search.  The cursor moves back to where you started the search.  If
        !           958: `C-g' is typed when there are characters in the search string that have
        !           959: not been found---because Emacs is still searching for them, or because it
        !           960: has failed to find them---then the search string characters which have not
        !           961: been found are discarded from the search string.  With them gone, the
        !           962: search is now successful and waiting for more input, so a second `C-g'
        !           963: will cancel the entire search.
        !           964: 
        !           965:   To search for a control character such as `C-s' or DEL or ESC,
        !           966: you must quote it by typing `C-q' first.  This function of `C-q' is
        !           967: analogous to its meaning as an Emacs command: it causes the following
        !           968: character to be treated the way a graphic character would normally be
        !           969: treated in the same context.
        !           970: 
        !           971:   You can change to searching backwards with `C-r'.  If a search fails
        !           972: because the place you started was too late in the file, you should do this.
        !           973: Repeated `C-r' keeps looking for more occurrences backwards.  A
        !           974: `C-s' starts going forwards again.  `C-r' in a search can be cancelled
        !           975: with DEL.
        !           976: 
        !           977:   If you know initially that you want to search backwards, you can
        !           978: use `C-r' instead of `C-s' to start the search, because `C-r'
        !           979: is also a key running a command (`isearch-backward') to search
        !           980: backward.
        !           981: 
        !           982:   The characters `C-y' and `C-w' can be used in incremental search
        !           983: to grab text from the buffer into the search string.  This makes it
        !           984: convenient to search for another occurrence of text at point.  `C-w'
        !           985: copies the word after point as part of the search string, advancing
        !           986: point over that word.  Another `C-s' to repeat the search will then
        !           987: search for a string including that word.  `C-y' is similar to `C-w'
        !           988: but copies all the rest of the current line into the search string.
        !           989: 
        !           990:   All the characters special in incremental search can be changed by setting
        !           991: the following variables:
        !           992: 
        !           993: `search-delete-char'     
        !           994:      Character to delete from incremental search string (normally DEL).
        !           995: `search-exit-char'     
        !           996:      Character to exit incremental search (normally ESC).
        !           997: `search-quote-char'     
        !           998:      Character to quote special characters for incremental search (normally
        !           999:      `C-q').
        !          1000: `search-repeat-char'     
        !          1001:      Character to repeat incremental search forwards (normally `C-s').
        !          1002: `search-reverse-char'     
        !          1003:      Character to repeat incremental search backwards (normally `C-r').
        !          1004: `search-yank-line-char'     
        !          1005:      Character to pull rest of line from buffer into search string
        !          1006:      (normally `C-y').
        !          1007: `search-yank-word-char'     
        !          1008:      Character to pull next word from buffer into search string (normally
        !          1009:      `C-w').
        !          1010: 
        !          1011: 
        !          1012: Slow Terminal Incremental Search
        !          1013: --------------------------------
        !          1014: 
        !          1015:   Incremental search on a slow terminal uses a modified style of display
        !          1016: that is designed to take less time.  Instead of redisplaying the buffer at
        !          1017: each place the search gets to, it creates a new single-line window and uses
        !          1018: that to display the line that the search has found.  The single-line window
        !          1019: comes into play as soon as point gets outside of the text that is already
        !          1020: on the screen.
        !          1021: 
        !          1022:   When the search is terminated, the single-line window is removed.  Only
        !          1023: at this time is the window in which the search was done redisplayed to show
        !          1024: its new value of point.
        !          1025: 
        !          1026:   The three dots at the end of the search string, normally used to indicate
        !          1027: that searching is going on, are not displayed in slow style display.
        !          1028: 
        !          1029:   The slow terminal style of display is used when the terminal baud rate is
        !          1030: less than or equal to the value of the variable `search-slow-speed',
        !          1031: initially 1200.
        !          1032: 
        !          1033:   The number of lines to use in slow terminal search display is controlled
        !          1034: by the variable `search-slow-window-lines'.  1 is its normal value.
        !          1035: 
        !          1036: 
        !          1037: File: emacs  Node: Nonincremental Search, Prev: Incremental Search, Up: Search, Next: Word Search
        !          1038: 
        !          1039: Nonincremental Search
        !          1040: =====================
        !          1041: 
        !          1042:   Emacs also has conventional nonincremental search commands, which require
        !          1043: you to type the entire search string before searching begins.
        !          1044: 
        !          1045: `C-s ESC STRING RET'     
        !          1046:      Search for STRING.
        !          1047: `C-r ESC STRING RET'     
        !          1048:      Search backward for STRING.
        !          1049: 
        !          1050:   To do a nonincremental search, first type `C-s ESC'.  This
        !          1051: enters the minibuffer to read the search string; terminate the string with
        !          1052: RET, and then the search is done.  If the string is not found the
        !          1053: search command gets an error.
        !          1054: 
        !          1055:   The way `C-s ESC' works is that the `C-s' invokes
        !          1056: incremental search, which is specially programmed to invoke nonincremental
        !          1057: search if the argument you give it is empty.  (Such an empty argument would
        !          1058: otherwise be useless.)  `C-r ESC' also works this way.
        !          1059: 
        !          1060:   Forward and backward nonincremental searches are implemented by the
        !          1061: commands `search-forward' and `search-backward'.  These commands
        !          1062: may be bound to keys in the usual manner.  The reason that incremental
        !          1063: search is programmed to invoke them as well is that `C-s ESC'
        !          1064: is the traditional sequence of characters used in Emacs to invoke
        !          1065: nonincremental search.
        !          1066: 
        !          1067:   However, nonincremental searches performed using `C-s ESC' do
        !          1068: not call `search-forward' right away.  The first thing done is to see
        !          1069: if the next character is `C-w', which requests a word search.
        !          1070: 
        !          1071: *Note Word Search::.
        !          1072: 
        !          1073: 
        !          1074: File: emacs  Node: Word Search, Prev: Nonincremental Search, Up: Search, Next: Regexp Search
        !          1075: 
        !          1076: Word Search
        !          1077: ===========
        !          1078: 
        !          1079:   Word search searches for a sequence of words without regard to how the
        !          1080: words are separated.  More precisely, you type a string of many words,
        !          1081: using single spaces to separate them, and the string can be found even if
        !          1082: there are multiple spaces, newlines or other punctuation between the words.
        !          1083: 
        !          1084:   Word search is useful in editing documents formatted by text formatters.
        !          1085: If you edit while looking at the printed, formatted version, you can't tell
        !          1086: where the line breaks are in the source file.  With word search, you can
        !          1087: search without having to know them.
        !          1088: 
        !          1089: `C-s ESC C-w WORDS RET'     
        !          1090:      Search for WORDS, ignoring differences in punctuation.
        !          1091: `C-r ESC C-w WORDS RET'     
        !          1092:      Search backward for WORDS, ignoring differences in punctuation.
        !          1093: 
        !          1094:   Word search is a special case of nonincremental search and is invoked
        !          1095: with `C-s ESC C-w'.  This is followed by the search string, which
        !          1096: must always be terminated with RET.  Being nonincremental, this
        !          1097: search does not start until the argument is terminated.  It works by
        !          1098: constructing a regular expression and searching for that.  *Note Regexp Search::.
        !          1099: 
        !          1100:   A backward word search can be done by `C-r ESC C-w'.
        !          1101: 
        !          1102:   Forward and backward word searches are implemented by the commands
        !          1103: `word-search-forward' and `word-search-backward'.  These commands
        !          1104: may be bound to keys in the usual manner.  The reason that incremental
        !          1105: search is programmed to invoke them as well is that `C-s ESC C-w'
        !          1106: is the traditional Emacs sequence of keys for word search.
        !          1107: 
        !          1108: 
        !          1109: File: emacs  Node: Regexp Search, Prev: Word Search, Up: Search, Next: Regexps
        !          1110: 
        !          1111: Regular Expression Search
        !          1112: =========================
        !          1113: 
        !          1114:   A "regular expression" ("regexp", for short) is a pattern that
        !          1115: denotes a set of strings, possibly an infinite set.  Searching for matches
        !          1116: for a regexp is a very powerful operation that editors on Unix systems have
        !          1117: traditionally offered.  In GNU Emacs, you can search for the next match for
        !          1118: a regexp either incrementally or not.
        !          1119: 
        !          1120:   Incremental search for a regexp is done by typing `C-M-s'
        !          1121: (`isearch-forward-regexp').  This command reads a search string
        !          1122: incrementally just like `C-s', but it treats the search string as a
        !          1123: regexp rather than looking for an exact match against the text in the
        !          1124: buffer.  Each time you add text to the search string, you make the regexp
        !          1125: longer, and the new regexp is searched for.  A reverse regexp search command
        !          1126: `isearch-backward-regexp' also exists but no key runs it.
        !          1127: 
        !          1128:   All of the control characters that do special things within an ordinary
        !          1129: incremental search have the same function in incremental regexp search.
        !          1130: Typing `C-s' or `C-r' immediately after starting the search
        !          1131: retrieves the last incremental search regexp used; that is to say,
        !          1132: incremental regexp and non-regexp searches have independent defaults.
        !          1133: 
        !          1134:   Note that adding characters to the regexp in an incremental regexp search
        !          1135: does not make the cursor move back and start again.  Perhaps it ought to; I
        !          1136: am not sure.  As it stands, if you have searched for `foo' and you
        !          1137: add `\|bar', the search will not check for a `bar' in the
        !          1138: buffer before the `foo'.
        !          1139: 
        !          1140:   Nonincremental search for a regexp is done by the functions
        !          1141: `re-search-forward' and `re-search-backward'.  You can invoke
        !          1142: these with `M-x', or bind them to keys.  Also, you can call
        !          1143: `re-search-forward' by way of incremental regexp search with
        !          1144: `C-M-s ESC'.
        !          1145: 
        !          1146: 

unix.superglobalmegacorp.com

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