|
|
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: Regexps, Prev: Regexp Search, Up: Search, Next: Search Case
27:
28: Syntax of Regular Expressions
29: =============================
30:
31: Regular expressions have a syntax in which a few characters are special
32: constructs and the rest are "ordinary". An ordinary character is a simple
33: regular expression which matches that character and nothing else. The
34: special characters are `$', `^', `.', `*', `+', `?', `[', `]' and `\'; no
35: new special characters will be defined. Any other character appearing in a
36: regular expression is ordinary, unless a `\' precedes it.
37:
38: For example, `f' is not a special character, so it is ordinary, and
39: therefore `f' is a regular expression that matches the string `f' and no
40: other string. (It does not match the string `ff'.) Likewise, `o' is a
41: regular expression that matches only `o'.
42:
43: Any two regular expressions A and B can be concatenated. The result is a
44: regular expression which matches a string if A matches some amount of the
45: beginning of that string and B matches the rest of the string.
46:
47: As a simple example, we can concatenate the regular expressions `f'
48: and `o' to get the regular expression `fo', which matches only
49: the string `fo'. Still trivial. To do something nontrivial, you
50: need to use one of the special characters. Here is a list of them.
51:
52: `. (Period)'
53: is a special character that matches any single character except a
54: newline. Using concatenation, we can make regular expressions like
55: `a.b' which matches any three-character string which begins with `a'
56: and ends with `b'.
57:
58: `*'
59: is not a construct by itself; it is a suffix, which means the
60: preceding regular expression is to be repeated as many times as
61: possible. In `fo*', the `*' applies to the `o', so `fo*' matches one
62: `f' followed by any number of `o's. The case of zero `o's is allowed:
63: `fo*' does match `f'.
64:
65: `*' always applies to the smallest possible preceding expression.
66: Thus, `fo*' has a repeating `o', not a repeating `fo'.
67:
68: The matcher processes a `*' construct by matching, immediately, as
69: many repetitions as can be found. Then it continues with the rest of
70: the pattern. If that fails, backtracking occurs, discarding some of
71: the matches of the `*'-modified construct in case that makes it
72: possible to match the rest of the pattern. For example, matching
73: `ca*ar' against the string `caaar', the `a*' first tries to match all
74: three `a's; but the rest of the pattern is `ar' and there is only `r'
75: left to match, so this try fails. The next alternative is for `a*' to
76: match only two `a's. With this choice, the rest of the regexp matches
77: successfully.
78:
79: `+'
80: Is a suffix character similar to `*' except that it requires that the
81: preceding expression be matched at least once. So, for example,
82: `ca+r' will match the strings `car' and `caaaar' but not the string
83: `cr', whereas `ca*r' would match all three strings.
84:
85: `?'
86: Is a suffix character similar to `*' except that it can match the
87: preceding expression either once or not at all. For example,
88: `ca?r' will match `car' or `cr'; nothing else.
89:
90: `[ ... ]'
91: `[' begins a "character set", which is terminated by a `]'. In the
92: simplest case, the characters between the two form the set. Thus,
93: `[ad]' matches either one `a' or one `d', and `[ad]*' matches any
94: string composed of just `a's and `d's (including the empty string),
95: from which it follows that `c[ad]*r' matches `cr', `car', `cdr',
96: `caddaar', etc.
97:
98: Character ranges can also be included in a character set, by writing
99: two characters with a `-' between them. Thus, `[a-z]' matches any
100: lower-case letter. Ranges may be intermixed freely with individual
101: characters, as in `[a-z$%.]', which matches any lower case letter or
102: `$', `%' or period.
103:
104: Note that the usual special characters are not special any more inside
105: a character set. A completely different set of special characters
106: exists inside character sets: `]', `-' and `^'.
107:
108: To include a `]' in a character set, you must make it the first
109: character. For example, `[]a]' matches `]' or `a'. To include a `-',
110: write `---', which is a range containing only `-'. To include `^',
111: make it other than the first character in the set.
112:
113: `[^ ... ]'
114: `[^' begins a "complement character set", which matches any character
115: except the ones specified. Thus, `[^a-z0-9A-Z]' matches all
116: characters except letters and digits.
117:
118: `^' is not special in a character set unless it is the first
119: character. The character following the `^' is treated as if it
120: were first (`-' and `]' are not special there).
121:
122: Note that a complement character set can match a newline, unless
123: newline is mentioned as one of the characters not to match.
124:
125: `^'
126: is a special character that matches the empty string, but only if at
127: the beginning of a line in the text being matched. Otherwise it fails
128: to match anything. Thus, `^foo' matches a `foo' which occurs
129: at the beginning of a line.
130:
131: `$'
132: is similar to `^' but matches only at the end of a line. Thus,
133: `xx*$' matches a string of one `x' or more at the end of a line.
134:
135: `\'
136: has two functions: it quotes the special characters (including
137: `\'), and it introduces additional special constructs.
138:
139: Because `\' quotes special characters, `\$' is a regular expression
140: which matches only `$', and `\[' is a regular expression which matches
141: only `[', and so on.
142:
143: Note: for historical compatibility, special characters are treated as
144: ordinary ones if they are in contexts where their special meanings make no
145: sense. For example, `*foo' treats `*' as ordinary since there is no
146: preceding expression on which the `*' can act. It is poor practice to
147: depend on this behavior; better to quote the special character anyway,
148: regardless of where is appears.
149:
150: For the most part, `\' followed by any character matches only
151: that character. However, there are several exceptions: characters
152: which, when preceded by `\', are special constructs. Such
153: characters are always ordinary when encountered on their own. Here
154: is a table of `\' constructs.
155:
156: `\|'
157: specifies an alternative. Two regular expressions A and B with `\|'
158: in between form an expression that matches anything that either A or B
159: will match.
160:
161: Thus, `foo\|bar' matches either `foo' or `bar' but no other string.
162:
163: `\|' applies to the largest possible surrounding expressions. Only a
164: surrounding `\( ... \)' grouping can limit the grouping power of `\|'.
165:
166: Full backtracking capability exists to handle multiple uses of `\|'.
167:
168: `\( ... \)'
169: is a grouping construct that serves three purposes:
170:
171: 1. To enclose a set of `\|' alternatives for other operations.
172: Thus, `\(foo\|bar\)x' matches either `foox' or `barx'.
173:
174: 2. To enclose a complicated expression for the postfix `*' to
175: operate on. Thus, `ba\(na\)*' matches `bananana', etc., with any
176: (zero or more) number of `na' strings.
177:
178: 3. To mark a matched substring for future reference.
179:
180:
181: This last application is not a consequence of the idea of a
182: parenthetical grouping; it is a separate feature which happens to be
183: assigned as a second meaning to the same `\( ... \)' construct
184: because there is no conflict in practice between the two meanings.
185: Here is an explanation of this feature:
186:
187: `\DIGIT'
188: after the end of a `\( ... \)' construct, the matcher remembers the
189: beginning and end of the text matched by that construct. Then, later
190: on in the regular expression, you can use `\' followed by DIGIT to
191: mean "match the same text matched the DIGIT'th time by the `\( ... \)'
192: construct."
193:
194: The strings matching the first nine `\( ... \)' constructs appearing
195: in a regular expression are assigned numbers 1 through 9 in order that the
196: open-parentheses appear in the regular expression. `\1' through
197: `\9' may be used to refer to the text matched by the corresponding
198: `\( ... \)' construct.
199:
200: For example, `\(.*\)\1' matches any newline-free string that is
201: composed of two identical halves. The `\(.*\)' matches the first
202: half, which may be anything, but the `\1' that follows must match
203: the same exact text.
204:
205: `\`'
206: matches the empty string, provided it is at the beginning
207: of the buffer.
208:
209: `\''
210: matches the empty string, provided it is at the end of
211: the buffer.
212:
213: `\b'
214: matches the empty string, provided it is at the beginning or end of a
215: word. Thus, `\bfoo\b' matches any occurrence of `foo' as a separate
216: word. `\bballs?\b' matches `ball' or `balls' as a separate word.
217:
218: `\B'
219: matches the empty string, provided it is not at the beginning or
220: end of a word.
221:
222: `\<'
223: matches the empty string, provided it is at the beginning of a word.
224:
225: `\>'
226: matches the empty string, provided it is at the end of a word.
227:
228: `\w'
229: matches any word-constituent character. The editor syntax table
230: determines which characters these are.
231:
232: `\W'
233: matches any character that is not a word-constituent.
234:
235: `\sCODE'
236: matches any character whose syntax is CODE. CODE is a character which
237: represents a syntax code: thus, `w' for word constituent, `-' for
238: whitespace, `(' for open-parenthesis, etc. *Note Syntax::.
239:
240: `\SCODE'
241: matches any character whose syntax is not CODE.
242:
243: Here is a complicated regexp, used by Emacs to recognize the end of a
244: sentence together with any whitespace that follows. It is given in Lisp
245: syntax to enable you to distinguish the spaces from the tab characters. In
246: Lisp syntax, the string constant begins and ends with a double-quote.
247: `\"' stands for a double-quote as part of the regexp, `\\' for a
248: backslash as part of the regexp, `\t' for a tab and `\n' for a
249: newline.
250:
251: "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*"
252:
253: This contains four parts in succession: a character set matching period,
254: `?' or `!'; a character set matching close-brackets,
255: quotes or parentheses, repeated any number of times; an alternative in
256: backslash-parentheses that matches end-of-line, a tab or two spaces; and a
257: character set matching whitespace characters, repeated any number of times.
258:
259:
260: File: emacs Node: Search Case, Prev: Regexps, Up: Search, Next: Replace
261:
262: Searching and Case
263: ==================
264:
265: All sorts of searches in Emacs normally ignore the case of the text they
266: are searching through; if you specify searching for `FOO', then `Foo' and
267: `foo' are also considered a match. Regexps, and in particular character
268: sets, are included: `[aB]' would match `a' or `A' or `b' or `B'.
269:
270: If you do not want this feature, set the variable `case-fold-search'
271: to `nil'. Then all letters must match exactly, including case. This
272: is a per-buffer variable; altering the variable affects only the current
273: buffer, but there is a default value which you can change as well.
274: *Note Locals::.
275:
276:
277: File: emacs Node: Replace, Prev: Search Case, Up: Search, Next: Other Repeating Search
278:
279: Replacement Commands
280: ====================
281:
282: Global search-and-replace operations are not needed as often in Emacs as
283: they are in other editors, but they are available. In addition to the
284: simple `replace-string' command which is like that found in most
285: editors, there is a `query-replace' command which asks you, for each
286: occurrence of the pattern, whether to replace it.
287:
288: The replace commands all replace one string (or regexp) with one
289: replacement string. It is possible to perform several replacements in
290: parallel using the command `expand-region-abbrevs'. *Note Expanding Abbrevs::.
291:
292: * Menu:
293:
294: * Unconditional Replace:: Replacing all matches for a string.
295: * Regexp Replace:: Replacing all matches for a regexp.
296: * Replacement and Case:: How replacements preserve case of letters.
297: * Query Replace:: How to use querying.
298:
299:
300: File: emacs Node: Unconditional Replace, Prev: Replace, Up: Replace, Next: Regexp Replace
301:
302: Unconditional Replacement
303: -------------------------
304:
305: `M-x replace-string RET STRING RET NEWSTRING RET'
306: Replace every occurrence of STRING with NEWSTRING.
307: `M-x replace-regexp RET REGEXP RET NEWSTRING RET'
308: Replace every match for REGEXP with NEWSTRING.
309:
310: To replace every instance of `foo' after point with `bar', use
311: the command `M-x replace-string' with the two arguments `foo' and
312: `bar'. Replacement occurs only after point, so if you want to cover
313: the whole buffer you must go to the beginning first. All occurrences up to
314: the end of the buffer are replaced; to limit replacement to part of the
315: buffer, narrow to that part of the buffer before doing the replacement
316: (*Note Narrowing::).
317:
318: When `replace-string' exits, point is left at the last occurrence
319: replaced. The value of point when the `replace-string' command was
320: issued is remembered on the mark ring; `C-u C-SPC' moves back
321: there.
322:
323: A numeric argument restricts replacement to matches that are surrounded
324: by word boundaries.
325:
326:
327: File: emacs Node: Regexp Replace, Prev: Unconditional Replace, Up: Replace, Next: Replacement and Case
328:
329: Regexp Replacement
330: ------------------
331:
332: `replace-string' replaces exact matches for a single string. The
333: similar command `replace-regexp' replaces any match for a specified
334: pattern.
335:
336: In `replace-regexp', the NEWSTRING need not be constant. It can refer to
337: all or part of what is matched by the REGEXP. `\&' in NEWSTRING stands for
338: the entire text being replaced. `\D' in NEWSTRING, where D is a digit,
339: stands for whatever matched the D'th parenthesized grouping in REGEXP. For
340: example,
341:
342: M-x replace-regexp RET c[ad]+r RET \&-safe RET
343:
344: would replace (for example) `cadr' with `cadr-safe' and `cddr'
345: with `cddr-safe'.
346:
347: M-x replace-regexp RET \(c[ad]+r\)-safe RET \1 RET
348:
349: would perform exactly the opposite replacements. To include a `\'
350: in the text to replace with, you must give `\\'.
351:
352:
353: File: emacs Node: Replacement and Case, Prev: Regexp Replace, Up: Replace, Next: Query Replace
354:
355: Replace Commands and Case
356: -------------------------
357:
358: If the arguments to a replace command are in lower case, it preserves
359: case when it makes a replacement. Thus, the command
360:
361: M-x replace-string RET foo RET bar RET
362:
363: replaces a lower case `foo' with a lower case `bar', `FOO'
364: with `BAR', and `Foo' with `Bar'. If upper case letters are
365: used in the second argument, they remain upper case every time that
366: argument is inserted. If upper case letters are used in the first
367: argument, the second argument is always substituted exactly as given, with
368: no case conversion. Likewise, if the variable `case-replace' is set
369: to `nil', replacement is done without case conversion. If
370: `case-fold-search' is set to `nil', case is significant in
371: matching occurrences of `foo' to replace; also, case conversion of the
372: replacement string is not done.
373:
374:
375: File: emacs Node: Query Replace, Prev: Replacement and Case, Up: Replace
376:
377: Query Replace
378: -------------
379:
380: `M-% STRING RET NEWSTRING RET'
381: `M-x query-replace RET STRING RET NEWSTRING RET'
382: Replace some occurrences of STRING with NEWSTRING.
383: `M-x query-replace-regexp RET REGEXP RET NEWSTRING RET'
384: Replace some matches for REGEXP with NEWSTRING.
385:
386: If you want to change only some of the occurrences of `foo' to `bar', not
387: all of them, then you cannot use an ordinary `replace-string'. Instead,
388: use `M-%' (`query-replace'). This command finds occurrences of `foo' one
389: by one, displays each occurrence and asks you whether to replace it. A
390: numeric argument to `query-replace' tells it to consider only occurrences
391: that are bounded by word-delimiter characters.
392:
393: Aside from querying, `query-replace' works just like `replace-string',
394: and `query-replace-regexp' works just like `replace-regexp'.
395:
396: The things you can type when you are shown an occurrence of STRING
397: or a match for REGEXP are:
398:
399:
400: `SPC'
401: to replace the occurrence with NEWSTRING. This preserves case, just
402: like `replace-string', provided `case-replace' is non-`nil', as it
403: normally is.
404:
405: `DEL'
406: to skip to the next occurrence without replacing this one.
407:
408: `, (Comma)'
409: to replace this occurrence and display the result. You are then asked
410: for another input character, except that since the replacement has
411: already been made, DEL and SPC are equivalent. You could
412: type `C-r' at this point (see below) to alter the replaced text. You
413: could also type `C-x u' to undo the replacement; this exits the
414: `query-replace', so if you want to do further replacement you must use
415: `C-x ESC' to restart (*Note Repetition::).
416:
417: `ESC'
418: to exit without doing any more replacements.
419:
420: `. (Period)'
421: to replace this occurrence and then exit.
422:
423: `!'
424: to replace all remaining occurrences without asking again.
425:
426: `^'
427: to go back to the location of the previous occurrence (or what used to
428: be an occurrence), in case you changed it by mistake. This works by
429: popping the mark ring. Only one `^' in a row is allowed, because
430: only one previous replacement location is kept during `query-replace'.
431:
432: `C-r'
433: to enter a recursive editing level, in case the occurrence needs to be
434: edited rather than just replaced with NEWSTRING. When you are
435: done, exit the recursive editing level with `C-M-c' and the next
436: occurrence will be displayed. *Note Recursive Edit::.
437:
438: `C-w'
439: to delete the occurrence, and then enter a recursive editing level as
440: in `C-r'. Use the recursive edit to insert text to replace the
441: deleted occurrence of STRING. When done, exit the recursive
442: editing level with `C-M-c' and the next occurrence will be
443: displayed.
444:
445: `C-l'
446: to redisplay the screen and then give another answer.
447:
448: `C-h'
449: to display a message summarizing these options, then give another
450: answer.
451:
452: If you type any other character, the `query-replace' is exited, and
453: the character executed as a command. To restart the `query-replace',
454: use `C-x ESC', which repeats the `query-replace' because it
455: used the minibuffer to read its arguments. *Note C-x ESC: Repetition.
456:
457:
458: File: emacs Node: Other Repeating Search, Prev: Replace, Up: Search
459:
460: Other Search-and-Loop Commands
461: ==============================
462:
463: Here are some other commands that find matches for a regular expression.
464: They all operate from point to the end of the buffer.
465:
466: `M-x occur'
467: Print each line that follows point and contains a match for the
468: specified regexp. A numeric argument specifies the number of context
469: lines to print before and after each matching line; the default is
470: none.
471:
472: The buffer `*Occur*' containing the output serves as a menu for
473: finding the occurrences in their original context. Find an occurrence
474: as listed in `*Occur*', position point there and type `C-c
475: C-c'; this switches to the buffer that was searched and moves point to
476: the original of the same occurrence.
477:
478: `M-x list-matching-lines'
479: Synonym for `M-x occur'.
480:
481: `M-x count-matches'
482: Print the number of matches following point for the specified regexp.
483:
484: `M-x delete-non-matching-lines'
485: Delete each line that follows point and does not contain a match for
486: the specified regexp.
487:
488: `M-x delete-matching-lines'
489: Delete each line that follows point and contains a match for the
490: specified regexp.
491:
492:
493: File: emacs Node: Fixit, Prev: Search, Up: Top, Next: Files
494:
495: Commands for Fixing Typos
496: *************************
497:
498: In this chapter we describe the commands that are especially useful for
499: the times when you catch a mistake in your text just after you have made
500: it, or change your mind while composing text on line.
501:
502: * Menu:
503:
504: * Kill Errors:: Commands to kill a batch of recently entered text.
505: * Transpose:: Exchanging two characters, words, lines, lists...
506: * Fixing Case:: Correcting case of last word entered.
507: * Spelling:: Apply spelling checker to a word, or a whole file.
508:
509:
510: File: emacs Node: Kill Errors, Prev: Fixit, Up: Fixit, Next: Transpose
511:
512: Killing Your Mistakes
513: =====================
514:
515: `DEL'
516: Delete last character (`delete-backward-char').
517: `M-DEL'
518: Kill last word (`backward-kill-word').
519: `C-x DEL'
520: Kill to beginning of sentence (`backward-kill-sentence').
521:
522: The DEL character (`delete-backward-char') is the most
523: important correction command. When used among graphic (self-inserting)
524: characters, it can be thought of as canceling the last character typed.
525:
526: When your mistake is longer than a couple of characters, it might be more
527: convenient to use `M-DEL' or `C-x DEL'. `M-DEL' kills back to the start of
528: the last word, and `C-x DEL' kills back to the start of the last sentence.
529: `C-x DEL' is particularly useful when you are thinking of what to write as
530: you type it, in case you change your mind about phrasing. `M-DEL' and `C-x
531: DEL' save the killed text for `C-y' and `M-y' to retrieve. *Note
532: Yanking::.
533:
534: `M-DEL' is often useful even when you have typed only a few
535: characters wrong, if you know you are confused in your typing and aren't
536: sure exactly what you typed. At such a time, you cannot correct with
537: DEL except by looking at the screen to see what you did. It requires
538: less thought to kill the whole word and start over again.
539:
540:
541: File: emacs Node: Transpose, Prev: Kill Errors, Up: Fixit, Next: Fixing Case
542:
543: Transposing Text
544: ================
545:
546: `C-t'
547: Transpose two characters (`transpose-chars').
548: `M-t'
549: Transpose two words (`transpose-words').
550: `C-M-t'
551: Transpose two balanced expressions (`transpose-sexps').
552: `C-x C-t'
553: Transpose two lines (`transpose-lines').
554:
555: The common error of transposing two characters can be fixed, when they
556: are adjacent, with the `C-t' command (`transpose-chars'). Normally,
557: `C-t' transposes the two characters on either side of point. When
558: given at the end of a line, rather than transposing the last character of
559: the line with the newline, which would be useless, `C-t' transposes the
560: last two characters on the line. So, if you catch your transposition error
561: right away, you can fix it with just a `C-t'. If you don't catch it so
562: fast, you must move the cursor back to between the two transposed
563: characters. If you transposed a space with the last character of the word
564: before it, the word motion commands are a good way of getting there.
565: Otherwise, a reverse search (`C-r') is often the best way.
566: *Note Search::.
567:
568:
569: `Meta-t' (`transpose-words') transposes the word before point
570: with the word after point. It moves point forward over a word, dragging
571: the word preceding or containing point forward as well. The punctuation
572: characters between the words do not move. For example, `FOO, BAR'
573: transposes into `BAR, FOO' rather than `BAR FOO,'.
574:
575: `C-M-t' (`transpose-sexps') is a similar command for transposing
576: two expressions (*Note Lists::), and `{C-x C-t} (`transpose-lines')'exchanges lines. They work like `M-t' except in determining the
577: division of the text into syntactic units.
578:
579: A numeric argument to a transpose command serves as a repeat count: it
580: tells the transpose command to move the character (word, sexp, line) before
581: or containing point across several other characters (words, sexps, lines).
582: For example, `C-u 3 C-t' moves the character before point forward across
583: three other characters. This is equivalent to repeating `C-t' three times.
584: `C-u - 4 M-t' moves the word before point backward across four words. `C-u
585: - C-M-t' would cancel the effect of plain `C-M-t'.
586:
587: A numeric argument of zero is assigned a special meaning (because
588: otherwise a command with a repeat count of zero would do nothing): to
589: transpose the character (word, sexp, line) ending after point with the
590: one ending after the mark.
591:
592:
593: File: emacs Node: Fixing Case, Prev: Transpose, Up: Fixit, Next: Spelling
594:
595: Case Conversion
596: ===============
597:
598: `M-- M-l'
599: Convert last word to lower case. Note `Meta--' is Meta-minus.
600: `M-- M-u'
601: Convert last word to all upper case.
602: `M-- M-c'
603: Convert last word to lower case with capital initial.
604:
605: A very common error is to type words in the wrong case. Because of this,
606: the word case-conversion commands `M-l', `M-u' and `M-c' have a special
607: feature when used with a negative argument: they do not move the cursor.
608: As soon as you see you have mistyped the last word, you can simply
609: case-convert it and go on typing. *Note Case::.
610:
611:
612: File: emacs Node: Spelling, Prev: Fixing Case, Up: Fixit
613:
614: Checking and Correcting Spelling
615: ================================
616:
617: `M-$'
618: Check and correct spelling of word (`spell-word').
619: `M-x spell-buffer'
620: Check and correct spelling of each word in the buffer.
621: `M-x spell-region'
622: Check and correct spelling of each word in the region.
623: `M-x spell-string'
624: Check spelling of specified word.
625:
626: To check the spelling of the word before point, and optionally correct it
627: as well, use the command `M-$' (`spell-word'). This command runs
628: an inferior process containing the `spell' program to see whether the
629: word is correct English. If it is not, it asks you to edit the word (in
630: the minibuffer) into a corrected spelling, and then does a `query-replace'
631: to substitute the corrected spelling for the old one throughout the buffer.
632:
633: If you exit the minibuffer without altering the original spelling, it
634: means you do not want to do anything to that word. Then the `query-replace'
635: is not done.
636:
637: `M-x spell-buffer' checks each word in the buffer the same way that
638: `spell-word' does, doing a `query-replace' if appropriate for every
639: incorrect word.
640:
641: `M-x spell-region' is similar but operates only on the region, not
642: the entire buffer.
643:
644: `M-x spell-string' reads a string as an argument and checks whether
645: that is a correctly spelled English word. It prints in the echo area a
646: message giving the answer.
647:
648:
649: File: emacs Node: Files, Prev: Fixit, Up: Top, Next: Buffers
650:
651: File Handling
652: *************
653:
654: The basic unit of stored data in Unix is the "file". To edit a file,
655: you must tell Emacs to examine the file and prepare a buffer containing a
656: copy of the file's text. This is called "visiting" the file. Editing
657: commands apply directly to text in the buffer; that is, to the copy inside
658: Emacs. Your changes appear in the file itself only when you "save" the
659: buffer back into the file.
660:
661: In addition to visiting and saving files, Emacs can delete, copy, rename,
662: and append to files, and operate on file directories.
663:
664: * Menu:
665:
666: * File Names:: How to type and edit file name arguments.
667: * Visiting:: Visiting a file prepares Emacs to edit the file.
668: * Saving:: Saving makes your changes permanent.
669: * Reverting:: Reverting cancels all the changes not saved.
670: * Auto Save:: Auto Save periodically protects against loss of data.
671: * ListDir:: Listing the contents of a file directory.
672: * Dired:: "Editing" a directory to delete, rename, etc.
673: the files in it.
674: * Misc File Ops:: Other things you can do on files.
675:
676:
677: File: emacs Node: File Names, Prev: Files, Up: Files, Next: Visiting
678:
679: File Names
680: ==========
681:
682: Most Emacs commands that operate on a file require you to specify the
683: file name. (Saving and reverting are exceptions; the buffer knows which
684: file name to use for them.) File names are specified using the minibuffer
685: (*Note Minibuffer::). "Completion" is available, to make it easier to
686: specify long file names. *Note Completion::.
687:
688: There is always a "default file name" which will be used if you type
689: just RET, entering an empty argument. Normally the default file name
690: is the name of the file visited in the current buffer; this makes it easy
691: to operate on that file with any of the Emacs file commands.
692:
693: Each buffer has a default directory, normally the same as the directory
694: of the file visited in that buffer. When Emacs reads a file name, if you
695: do not specify a directory, the default directory is used. If you specify
696: a directory in a relative fashion, with a name that does not start with a
697: slash, it is interpreted with respect to the default directory. The
698: default directory is kept in the variable `default-directory', which
699: has a separate value in every buffer.
700:
701: For example, if the default file name is `/u/rms/gnu/gnu.tasks' then
702: the default directory is `/u/rms/gnu/'. If you type just `foo',
703: which does not specify a directory, it is short for `/u/rms/gnu/foo'.
704: `../.login' would stand for `/u/rms/.login'. `new/foo'
705: would stand for the filename `/u/rms/gnu/new/foo'.
706:
707: The command `M-x pwd' prints the current buffer's default directory,
708: and the command `M-x cd' sets it (to a value read using the
709: minibuffer). A buffer's default directory changes only when the `cd'
710: command is used. A file-visiting buffer's default directory is initialized
711: to the directory of the file that is visited there. If a buffer is made
712: randomly with `C-x b', its default directory is copied from that of the
713: buffer that was current at the time.
714:
715: The default directory actually appears in the minibuffer when the
716: minibuffer becomes active to read a file name. This serves two purposes:
717: it shows you what the default is, so that you can type a relative file name
718: and know with certainty what it will mean, and it allows you to edit the
719: default to specify a different directory. This insertion of the default
720: directory is inhibited if the variable `insert-default-directory' is
721: set to `nil'.
722:
723: Note that it is legitimate to type an absolute file name after you enter
724: the minibuffer, ignoring the presence of the default directory name as part
725: of the text. The final minibuffer contents may look invalid, but that is
726: not so. *Note Minibuffer File::.
727:
728: `$' in a file name is used to substitute environment variables. For
729: example, if you have used the shell command `setenv FOO rms/hacks' to
730: set up an environment variable named `FOO', then you can use
731: `/u/$FOO/test.c' or `/u/${FOO}/test.c' as an abbreviation for
732: `/u/rms/hacks/test.c'. The environment variable name consists of all
733: the alphanumeric characters after the `$'; alternatively, it may be
734: enclosed in braces after the `$'. Note that the `setenv' command
735: affects Emacs only if done before Emacs is started.
736:
737: To access a file with `$' in its name, type `$$'. This pair
738: is converted to a single `$' at the same time as variable substitution
739: is performed for single `$'. The Lisp function that performs the
740: substitution is called `substitute-in-file-name'. The substitution
741: is performed only on filenames read as such using the minibuffer.
742:
743:
744: File: emacs Node: Visiting, Prev: File Names, Up: Files, Next: Saving
745:
746: Visiting Files
747: ==============
748:
749: `C-x C-f'
750: Visit a file (`find-file').
751: `C-x C-v'
752: Visit a different file instead of the one visited last
753: (`find-alternate-file').
754: `C-x 4 C-f'
755: Visit a file, in another window (`find-file-other-window'). Don't
756: change this window.
757:
758: "Visiting" a file means copying its contents into Emacs where you can
759: edit them. Emacs makes a new buffer for each file that you visit. We say
760: that the buffer is visiting the file that it was created to hold. Emacs
761: constructs the buffer name from the file name by throwing away the
762: directory, keeping just the name proper. For example, a file named
763: `/usr/rms/emacs.tex' would get a buffer named `emacs.tex'. If
764: there is already a buffer with that name, a unique name is constructed by
765: appending `<2>', `<3>', or so on, using the lowest number that
766: makes a name that is not already in use.
767:
768: Each window's mode line shows the name of the buffer that is being displayed
769: in that window, so you can always tell what buffer you are editing.
770:
771: The changes you make with Emacs are made in the Emacs buffer. They do
772: not take effect in the file that you visited, or any place permanent, until
773: you "save" the buffer. Saving the buffer means that Emacs writes the
774: current contents of the buffer into its visited file. *Note Saving::.
775:
776: If a buffer contains changes that have not been saved, the buffer is said
777: to be "modified". This is important because it implies that some
778: changes will be lost if the buffer is not saved. The mode line displays
779: two stars near the left margin if the buffer is modified.
780:
781: To visit a file, use the command `C-x C-f' (`find-file'). Follow
782: the command with the name of the file you wish to visit, terminated by a
783: RET.
784:
785: The file name is read using the minibuffer (*Note Minibuffer::), with
786: defaulting and completion in the standard manner (*Note File Names::).
787: While in the minibuffer, you can abort `C-x C-f' by typing `C-g'.
788:
789: Your confirmation that `C-x C-f' has completed successfully is the
790: appearance of new text on the screen and a new buffer name in the mode
791: line. If the specified file does not exist and could not be created, or
792: cannot be read, then an error results. The error message is printed in the
793: echo area, and includes the file name which Emacs was trying to visit.
794:
795: If you visit a file that is already in Emacs, `C-x C-f' does not make
796: another copy. It selects the existing buffer containing that file.
797: However, before doing so, it checks that the file itself has not changed
798: since you visited or saved it last. If the file has changed, a warning
799: message is printed. *Note Simultaneous Editing: Interlocking.
800:
801: What if you want to create a file? Just visit it. Emacs prints
802: `(New File)' in the echo area, but in other respects behaves as if you
803: had visited an existing empty file. If you make any changes and save them,
804: the file is created.
805:
806: If you visit a nonexistent file unintentionally (because you typed the
807: wrong file name), use the `C-x C-v' (`find-alternate-file')
808: command to visit the file you wanted. `C-x C-v' is similar to `C-x
809: C-f', but it kills the current buffer (after first offering to save it if
810: it is modified). `C-x C-v' is allowed even if the current buffer
811: is not visiting a file.
812:
813: If the file you specify is actually a directory, Dired is called on that
814: directory (*Note Dired::). This can be inhibited by setting the variable
815: `find-file-run-dired' to `nil'; then it is an error to try to
816: visit a directory.
817:
818: `C-x 4 f' (`find-file-other-window') is like `C-x C-f'
819: except that the buffer containing the specified file is selected in another
820: window. The window that was selected before `C-x 4 f' continues to
821: show the same buffer it was already showing. If this command is used when
822: only one window is being displayed, that window is split in two, with one
823: window showing the same before as before, and the other one showing the
824: newly requested file. *Note Windows::.
825:
826: There are two hook variables that allow extensions to modify the
827: operation of visiting files. Visiting a file that does not exist runs the
828: functions in the list `find-file-not-found-hooks'; the value of this
829: variable is expected to be a list of functions, and the functions are
830: called one by one until one of them returns non-`nil'. Any visiting
831: of a file, whether extant or not, expects `find-file-hooks' to
832: contain list of functions and calls them all, one by one. In both cases
833: the functions receive no arguments. Visiting a nonexistent file
834: runs the `find-file-not-found-hooks' first.
835:
836:
837: File: emacs Node: Saving, Prev: Visiting, Up: Files, Next: Reverting
838:
839: Saving Files
840: ============
841:
842: "Saving" a buffer in Emacs means writing its contents back into the file
843: that was visited in the buffer.
844:
845: `C-x C-s'
846: Save the current buffer in its visited file (`save-buffer').
847: `C-x s'
848: Save any or all buffers in their visited files (`save-some-buffers').
849: `M-~'
850: Forget that the current buffer has been changed (`not-modified').
851: `C-x C-w'
852: Save the current buffer in a specified file, and record that file as
853: the one visited in the buffer (`write-file').
854: `M-x set-visited-file-name'
855: Change file the name under which the current buffer will be saved.
856:
857: When you wish to save the file and make your changes permanent, type
858: `C-x C-s' (`save-buffer'). After saving is finished, `C-x C-s'
859: prints a message such as
860:
861: Wrote /u/rms/gnu/gnu.tasks
862:
863: If the selected buffer is not modified (no changes have been made in it
864: since the buffer was created or last saved), saving is not really done,
865: because it would have no effect. Instead, `C-x C-s' prints a message
866: in the echo area saying
867:
868: (No changes need to be written)
869:
870: The command `C-x s' (`save-some-buffers') can save any or all modified
871: buffers. First it asks, for each modified buffer, whether to save it.
872: These questions should be answered with `y' or `n'. `C-x C-c',
873: the key that kills Emacs, invokes `save-some-buffers' and therefore
874: asks the same questions.
875:
876: If you have changed a buffer and do not want the changes to be saved, you
877: should take some action to prevent it. Otherwise, each time you use
878: `save-some-buffers' you are liable to save it by mistake. One thing
879: you can do is type `M-~' (`not-modified'), which clears out the
880: indication that the buffer is modified. If you do this, none of the save
881: commands will believe that the buffer needs to be saved. (`~' is often
882: used as a mathematical symbol for `not'; thus `Meta-~' is `not', metafied.)
883: You could also use `set-visited-file-name' (see below) to mark the
884: buffer as visiting a different file name, one which is not in use for
885: anything important. Alternatively, you can undo all the changes made since
886: the file was visited or saved, by reading the text from the file again.
887: This is called "reverting". *Note Reverting::. You could also undo all
888: the changes by repeating the undo command `C-x u' until you have undone
889: all the changes; but this only works if you have not made more changes than
890: the undo mechanism can remember.
891:
892: `M-x set-visited-file-name' alters the name of the file that the
893: current buffer is visiting. It reads the new file name using the
894: minibuffer. It can be used on a buffer that is not visiting a file, too.
895: The buffer's name is changed to correspond to the file it is now visiting
896: in the usual fashion (unless the new name is in use already for some other
897: buffer; in that case, the buffer name is not changed).
898: `set-visited-file-name' does not save the buffer in the newly visited
899: file; it just alters the records inside Emacs so that, if you save the
900: buffer, it will be saved in that file. It also marks the buffer as
901: "modified" so that `C-x C-s' will save.
902:
903: If you wish to mark the buffer as visiting a different file and save it
904: right away, use `C-x C-w' (`write-file'). It is precisely
905: equivalent to `set-visited-file-name' followed by `C-x C-s'.
906: `C-x C-s' used on a buffer that is not visiting with a file has the
907: same effect as `C-x C-w'; that is, it reads a file name, marks the
908: buffer as visiting that file, and saves it there. The default file name in
909: a buffer that is not visiting a file is made by combining the buffer name
910: with the buffer's default directory.
911:
912: If Emacs is about to save a file and sees that the date of the latest
913: version on disk does not match what Emacs last read or wrote, Emacs
914: notifies you of this fact, because it probably indicates a problem caused
915: by simultaneous editing and requires your immediate attention.
916: *Note Simultaneous Editing: Interlocking.
917:
918: If the variable `require-final-newline' is non-`nil', Emacs
919: puts a newline at the end of any file that doesn't already end in one,
920: every time a file is saved or written.
921:
922: You can implement other ways to write files, and other things to be done
923: before writing them, using the hook variable `write-file-hooks'. The
924: value of this variable should be a list of Lisp functions. When a file is
925: to be written, the functions in the list are called, one by one, with no
926: arguments. If one of them returns a non-`nil' value, Emacs takes this
927: to mean that the file has been written in some suitable fashion; the rest
928: of the functions are not called, and normal writing is not done.
929:
930: * Menu:
931:
932: * Backup:: How Emacs saves the old version of your file.
933: * Interlocking:: How Emacs protects against simultaneous editing
934: of one file by two users.
935:
936:
937: File: emacs Node: Backup, Prev: Saving, Up: Saving, Next: Interlocking
938:
939: Backup Files
940: ------------
941:
942: Because Unix does not provide version numbers in file names, rewriting a
943: file in Unix automatically destroys all record of what the file used to
944: contain. Thus, saving a file from Emacs throws away the old contents of
945: the file---or it would, except that Emacs carefully copies the old contents
946: to another file, called the "backup" file, before actually saving.
947: (Provided the variable `make-backup-files' is non-`nil'.
948: Backup files are not written if this variable is `nil').
949:
950: At your option, Emacs can keep either a single backup file or a series of
951: numbered backup files for each file that you edit.
952:
953: Emacs makes a backup for a file only the first time the file is saved
954: from one buffer. No matter how many times you save a file, its backup file
955: continues to contain the contents from before the file was visited.
956: Normally this means that the backup file contains the contents from before
957: the current editing session; however, if you kill the buffer and then visit
958: the file again, a new backup file will be made by the next save.
959:
960: * Menu:
961:
962: * Names: Backup Names. How backup files are named;
963: Choosing single or numbered backup files.
964: * Deletion: Backup Deletion. Emacs deletes excess numbered backups.
965: * Copying: Backup Copying. Backups can be made by copying or renaming.
966:
967:
968: File: emacs Node: Backup Names, Prev: Backup, Up: Backup, Next: Backup Deletion
969:
970: Single or Numbered Backups
971: ..........................
972:
973: If you choose to have a single backup file (this is the default),
974: the backup file's name is constructed by appending `~' to the
975: file name being edited; thus, the backup file for `eval.c' would
976: be `eval.c~'.
977:
978: If you choose to have a series of numbered backup files, backup file
979: names are made by appending `.~', the number, and another `~' to
980: the original file name. Thus, the backup files of `eval.c' would be
981: called `eval.c.~1~', `eval.c.~2~', and so on, through names
982: like `eval.c.~259~' and beyond.
983:
984: If protection stops you from writing backup files under the usual names,
985: the backup file is written as `%backup%~' in your home directory.
986: Only one such file can exist, so only the most recently made such backup is
987: available.
988:
989: The choice of single backup or numbered backups is controlled by the
990: variable `version-control'. Its possible values are
991:
992: `t'
993: Make numbered backups.
994: `nil'
995: Make numbered backups for files that have numbered backups already.
996: Otherwise, make single backups.
997: `never'
998: Do not in any case make numbered backups; always make single backups.
999:
1000: `version-control' may be set locally in an individual buffer to
1001: control the making of backups for that buffer's file. For example,
1002: Rmail mode locally sets `version-control' to `never' to make sure
1003: that there is only one backup for an Rmail file. *Note Locals::.
1004:
1005:
1006: File: emacs Node: Backup Deletion, Prev: Backup Names, Up: Backup, Next: Backup Copying
1007:
1008: Automatic Deletion of Backups
1009: .............................
1010:
1011: To prevent unlimited consumption of disk space, Emacs can delete numbered
1012: backup versions automatically. Generally Emacs keeps the first few backups
1013: and the latest few backups, deleting any in between. This happens every
1014: time a new backup is made. The two variables that control the deletion are
1015: `kept-old-versions' and `kept-new-versions'. Their values are, respectively
1016: the number of oldest (lowest-numbered) backups to keep and the number of
1017: newest (highest-numbered) ones to keep, each time a new backup is made.
1018: Recall that these values are used just after a new backup version is made;
1019: that newly made backup is included in the count in `kept-new-versions'.
1020: By default, both variables are 2.
1021:
1022: If `trim-versions-without-asking' is non-`nil', the excess
1023: middle versions are deleted without a murmur. If it is `nil', the
1024: default, then you are asked whether the excess middle versions should
1025: really be deleted.
1026:
1027: Dired's `.' (Period) command can also be used to delete old versions.
1028: *Note Dired::.
1029:
1030:
1031: File: emacs Node: Backup Copying, Prev: Backup Deletion, Up: Backup
1032:
1033: Copying vs. Renaming
1034: ....................
1035:
1036: Backup files can be made by copying the old file or by renaming it. This
1037: makes a difference when the old file has multiple names. If the old file
1038: is renamed into the backup file, then the alternate names become names for
1039: the backup file. If the old file is copied instead, then the alternate
1040: names remain names for the file that you are editing, and the contents
1041: accessed by those names will be the new contents.
1042:
1043: The method of making a backup file may also affect the file's owner
1044: and group. If copying is used, these do not change. If renaming is used,
1045: you become the file's owner, and the file's group becomes the default
1046: (different operating systems have different defaults for the group).
1047:
1048: Having the owner change is usually a good idea, because then the owner
1049: always shows who last edited the file. Also, the owners of the backups
1050: show who produced those versions. Occasionally there is a file whose
1051: owner should not change; it is a good idea for such files to contain
1052: local variable lists to set `backup-by-copying-when-mismatch' for
1053: them alone (*Note File Variables::).
1054:
1055: The choice of renaming or copying is controlled by three variables.
1056: Normally, renaming is done. If the variable `backup-by-copying' is
1057: non-`nil', copying is used. Otherwise, if the variable
1058: `backup-by-copying-when-linked' is non-`nil', then copying is done for
1059: files that have multiple names, but renaming may still done when the file
1060: being edited has only one name. If the variable
1061: `backup-by-copying-when-mismatch' is non-`nil', then copying is done if
1062: renaming would cause the file's owner or group to change.
1063:
1064:
1065: File: emacs Node: Interlocking, Prev: Backup, Up: Saving
1066:
1067: Protection against Simultaneous Editing
1068: ---------------------------------------
1069:
1070: Simultaneous editing occurs when two users visit the same file, both make
1071: changes, and then both save them. If nobody were informed that this was
1072: happening, whichever user saved first would later find that his changes
1073: were lost. On some systems, Emacs notices immediately when the second user
1074: starts to change the file, and issues an immediate warning. When this is
1075: not possible, or if the second user has gone on to change the file despite
1076: the warning, Emacs checks later when the file is saved, and issues a second
1077: warning when a user is about to overwrite a file containing another user's
1078: changes. If the editing user takes the proper corrective action at this
1079: point, he can prevent actual loss of work.
1080:
1081: When you make the first modification in an Emacs buffer that is visiting
1082: a file, Emacs records that you have locked the file. (It does this by
1083: writing another file in a directory reserved for this purpose.) The lock
1084: is removed when you save the changes. The idea is that the file is locked
1085: whenever the buffer is modified. If you begin to modify the buffer while
1086: the visited file is locked by someone else, this constitutes a collision,
1087: and Emacs asks you what to do. It does this by calling the Lisp function
1088: `ask-user-about-lock', which you can redefine for the sake of
1089: customization. The standard definition of this function asks you a
1090: question and accepts three possible answers:
1091:
1092: `s'
1093: Steal the lock. Whoever was already changing the file loses the lock,
1094: and you gain the lock.
1095: `p'
1096: Proceed. Go ahead and edit the file despite its being locked by someone else.
1097: `q'
1098: Quit. This causes an error (`file-locked') and the modification you
1099: were trying to make in the buffer does not actually take place.
1100:
1101: Note that locking works on the basis of a file name; if a file has
1102: multiple names, Emacs does not realize that the two names are the same file
1103: and cannot prevent two user from editing it simultaneously under different
1104: names. However, basing locking on names means that Emacs can interlock the
1105: editing of new files that will not really exist until they are saved.
1106:
1107: Some systems are not configured to allow Emacs to make locks. On
1108: these systems, Emacs cannot detect trouble in advance, but it still can
1109: detect it in time to prevent you from overwriting someone else's changes.
1110:
1111: Every time Emacs saves a buffer, it first checks the last-modification
1112: date of the existing file on disk to see that it has not changed since the
1113: file was last visited or saved. If the date does not match, it implies
1114: that changes were made in the file in some other way, and these changes are
1115: about to be lost if Emacs actually does save. To prevent this, Emacs
1116: prints a warning message and asks for confirmation before saving.
1117: Occasionally you will know why the file was changed and know that it does
1118: not matter; then you can answer `yes' and proceed. Otherwise, you should
1119: cancel the save with `C-g' and investigate the situation.
1120:
1121: The first thing you should do when notified that simultaneous editing has
1122: already taken place is to list the directory with `C-u C-x C-d' (*Note
1123: Directory Listing: ListDir.). This will show the file's current author.
1124: You should attempt to contact him to warn him not to continue editing.
1125: Often the next step is to save the contents of your Emacs buffer under a
1126: different name, and use `diff' to compare the two files.
1127:
1128: Simultaneous editing checks are also made when you visit with `C-x
1129: C-f' a file that is already visited and when you start to modify a file.
1130: This is not strictly necessary, but it can cause you to find out about the
1131: problem earlier, when perhaps correction takes less work.
1132:
1133:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.