|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.