]> code.delx.au - gnu-emacs/blob - man/basic.texi
Minor change.
[gnu-emacs] / man / basic.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node Basic, Minibuffer, Exiting, Top
5 @chapter Basic Editing Commands
6
7 @kindex C-h t
8 @findex help-with-tutorial
9 We now give the basics of how to enter text, make corrections, and
10 save the text in a file. If this material is new to you, you might
11 learn it more easily by running the Emacs learn-by-doing tutorial. To
12 use the tutorial, run Emacs and type @kbd{Control-h t}
13 (@code{help-with-tutorial}).
14
15 To clear the screen and redisplay, type @kbd{C-l} (@code{recenter}).
16
17 @menu
18
19 * Inserting Text:: Inserting text by simply typing it.
20 * Moving Point:: How to move the cursor to the place where you want to
21 change something.
22 * Erasing:: Deleting and killing text.
23 * Undo:: Undoing recent changes in the text.
24 * Files: Basic Files. Visiting, creating, and saving files.
25 * Help: Basic Help. Asking what a character does.
26 * Blank Lines:: Commands to make or delete blank lines.
27 * Continuation Lines:: Lines too wide for the screen.
28 * Position Info:: What page, line, row, or column is point on?
29 * Arguments:: Numeric arguments for repeating a command.
30 * Repeating:: A short-cut for repeating the previous command.
31 @end menu
32
33 @node Inserting Text
34 @section Inserting Text
35
36 @cindex insertion
37 @cindex graphic characters
38 To insert printing characters into the text you are editing, just type
39 them. This inserts the characters you type into the buffer at the
40 cursor (that is, at @dfn{point}; @pxref{Point}). The cursor moves
41 forward, and any text after the cursor moves forward too. If the text
42 in the buffer is @samp{FOOBAR}, with the cursor before the @samp{B},
43 then if you type @kbd{XX}, you get @samp{FOOXXBAR}, with the cursor
44 still before the @samp{B}.
45
46 To @dfn{delete} text you have just inserted, use the large key
47 labeled @key{DEL}, @key{BACKSPACE} or @key{DELETE} which is a short
48 distance above the @key{RET} or @key{ENTER} key. This is the key you
49 normally use, outside Emacs, for erasing the last character that you
50 typed. Regardless of the label on that key, Emacs always thinks of it
51 as @key{DEL}, and that's what we call it in this manual.
52
53 The @key{DEL} key deletes the character @emph{before} the cursor.
54 As a consequence, the cursor and all the characters after it move
55 backwards. If you type a printing character and then type @key{DEL},
56 they cancel out.
57
58 On most computers, Emacs recognizes automatically which key ought to
59 be @key{DEL}, and sets it up that way. But in some cases, especially
60 with text-only terminals, you will need to tell Emacs which key to use
61 for that purpose. If the large key not far above the @key{RET} or
62 @key{ENTER} key doesn't delete backwards, you need to do this.
63 @xref{DEL Gets Help}, for an explanation of how.
64
65 Many keyboards have both a @key{BACKSPACE} key a short ways above
66 @key{RET} or @key{ENTER}, and a @key{DELETE} key elsewhere. In that
67 case, the @key{BACKSPACE} key is @key{DEL}, and the @key{DELETE} key
68 does something else---it deletes ``forwards,'' deleting the character
69 after point, the one underneath the cursor, like @kbd{C-d} (see
70 below).
71
72 @kindex RET
73 @cindex newline
74 To end a line and start typing a new one, type @key{RET}. This
75 inserts a newline character in the buffer. If point is in the middle of
76 a line, @key{RET} splits the line. Typing @key{DEL} when the cursor is
77 at the beginning of a line deletes the preceding newline, thus joining
78 the line with the preceding line.
79
80 Emacs can split lines automatically when they become too long, if you
81 turn on a special minor mode called @dfn{Auto Fill} mode.
82 @xref{Filling}, for how to use Auto Fill mode.
83
84 If you prefer to have text characters replace (overwrite) existing
85 text rather than shove it to the right, you can enable Overwrite mode,
86 a minor mode. @xref{Minor Modes}.
87
88 @cindex quoting
89 @kindex C-q
90 @findex quoted-insert
91 Direct insertion works for printing characters and @key{SPC}, but other
92 characters act as editing commands and do not insert themselves. If you
93 need to insert a control character or a character whose code is above 200
94 octal, you must @dfn{quote} it by typing the character @kbd{Control-q}
95 (@code{quoted-insert}) first. (This character's name is normally written
96 @kbd{C-q} for short.) There are two ways to use @kbd{C-q}:@refill
97
98 @itemize @bullet
99 @item
100 @kbd{C-q} followed by any non-graphic character (even @kbd{C-g})
101 inserts that character.
102
103 @item
104 @kbd{C-q} followed by a sequence of octal digits inserts the character
105 with the specified octal character code. You can use any number of
106 octal digits; any non-digit terminates the sequence. If the terminating
107 character is @key{RET}, it serves only to terminate the sequence; any
108 other non-digit is itself used as input after terminating the sequence.
109 (The use of octal sequences is disabled in ordinary non-binary Overwrite
110 mode, to give you a convenient way to insert a digit instead of
111 overwriting with it.)
112 @end itemize
113
114 @cindex 8-bit character codes
115 @noindent
116 When multibyte characters are enabled, if you specify a code in the
117 range 0200 through 0377 octal, @kbd{C-q} assumes that you intend to
118 use some ISO 8859-@var{n} character set, and converts the specified
119 code to the corresponding Emacs character code. @xref{Enabling
120 Multibyte}. You select @emph{which} of the ISO 8859 character sets to
121 use through your choice of language environment (@pxref{Language
122 Environments}).
123
124 @vindex read-quoted-char-radix
125 To use decimal or hexadecimal instead of octal, set the variable
126 @code{read-quoted-char-radix} to 10 or 16. If the radix is greater than
127 10, some letters starting with @kbd{a} serve as part of a character
128 code, just like digits.
129
130 A numeric argument to @kbd{C-q} specifies how many copies of the
131 quoted character should be inserted (@pxref{Arguments}).
132
133 @findex newline
134 @findex self-insert
135 Customization information: @key{DEL} in most modes runs the command
136 @code{delete-backward-char}; @key{RET} runs the command @code{newline}, and
137 self-inserting printing characters run the command @code{self-insert},
138 which inserts whatever character was typed to invoke it. Some major modes
139 rebind @key{DEL} to other commands.
140
141 @node Moving Point
142 @section Changing the Location of Point
143
144 @cindex arrow keys
145 @cindex moving point
146 @cindex movement
147 @cindex cursor motion
148 @cindex moving the cursor
149 To do more than insert characters, you have to know how to move point
150 (@pxref{Point}). The simplest way to do this is with arrow keys, or by
151 clicking the left mouse button where you want to move to.
152
153 There are also control and meta characters for cursor motion. Some
154 are equivalent to the arrow keys (these date back to the days before
155 terminals had arrow keys, and are usable on terminals which don't have
156 them). Others do more sophisticated things.
157
158 @kindex C-a
159 @kindex C-e
160 @kindex C-f
161 @kindex C-b
162 @kindex C-n
163 @kindex C-p
164 @kindex M->
165 @kindex M-<
166 @kindex M-r
167 @kindex LEFT
168 @kindex RIGHT
169 @kindex UP
170 @kindex DOWN
171 @findex beginning-of-line
172 @findex end-of-line
173 @findex forward-char
174 @findex backward-char
175 @findex next-line
176 @findex previous-line
177 @findex beginning-of-buffer
178 @findex end-of-buffer
179 @findex goto-char
180 @findex goto-line
181 @findex move-to-window-line
182 @table @kbd
183 @item C-a
184 Move to the beginning of the line (@code{beginning-of-line}).
185 @item C-e
186 Move to the end of the line (@code{end-of-line}).
187 @item C-f
188 Move forward one character (@code{forward-char}). The right-arrow key
189 does the same thing.
190 @item C-b
191 Move backward one character (@code{backward-char}). The left-arrow
192 key has the same effect.
193 @item M-f
194 Move forward one word (@code{forward-word}).
195 @item M-b
196 Move backward one word (@code{backward-word}).
197 @item C-n
198 Move down one line, vertically (@code{next-line}). This command
199 attempts to keep the horizontal position unchanged, so if you start in
200 the middle of one line, you end in the middle of the next. The
201 down-arrow key does the same thing.
202 @item C-p
203 Move up one line, vertically (@code{previous-line}). The up-arrow key
204 has the same effect.
205 @item M-r
206 Move point to left margin, vertically centered in the window
207 (@code{move-to-window-line}). Text does not move on the screen.
208
209 A numeric argument says which screen line to place point on. It counts
210 screen lines down from the top of the window (zero for the top line). A
211 negative argument counts lines from the bottom (@minus{}1 for the bottom
212 line).
213 @item M-<
214 Move to the top of the buffer (@code{beginning-of-buffer}). With
215 numeric argument @var{n}, move to @var{n}/10 of the way from the top.
216 @xref{Arguments}, for more information on numeric arguments.@refill
217 @item M->
218 Move to the end of the buffer (@code{end-of-buffer}).
219 @item C-v
220 Scroll the display one screen forward, and move point if necessary to put
221 it on the screen (@code{scroll-up}). This doesn't always
222 move point, but it is commonly used to do so.
223 If your keyboard has a @key{PAGEDOWN} key, it does the same thing.
224
225 Scrolling commands are further described in @ref{Scrolling}.
226 @item M-v
227 Scroll one screen backward, and move point if necessary to put it on
228 the screen (@code{scroll-down}). This doesn't always move point, but
229 it is commonly used to do so. The @key{PAGEUP} key has the same
230 effect.
231 @item M-x goto-char
232 Read a number @var{n} and move point to buffer position @var{n}.
233 Position 1 is the beginning of the buffer.
234 @item M-x goto-line
235 Read a number @var{n} and move point to line number @var{n}. Line 1
236 is the beginning of the buffer.
237 @item C-x C-n
238 @findex set-goal-column
239 @kindex C-x C-n
240 Use the current column of point as the @dfn{semipermanent goal column} for
241 @kbd{C-n} and @kbd{C-p} (@code{set-goal-column}). Henceforth, those
242 commands always move to this column in each line moved into, or as
243 close as possible given the contents of the line. This goal column remains
244 in effect until canceled.
245 @item C-u C-x C-n
246 Cancel the goal column. Henceforth, @kbd{C-n} and @kbd{C-p} once
247 again try to stick to a fixed horizontal position, as usual.
248 @end table
249
250 @vindex track-eol
251 If you set the variable @code{track-eol} to a non-@code{nil} value,
252 then @kbd{C-n} and @kbd{C-p} when at the end of the starting line move
253 to the end of another line. Normally, @code{track-eol} is @code{nil}.
254 @xref{Variables}, for how to set variables such as @code{track-eol}.
255
256 @vindex next-line-add-newlines
257 @kbd{C-n} normally gets an error when you use it on the last line of
258 the buffer (just as @kbd{C-p} gets an error on the first line). But
259 if you set the variable @code{next-line-add-newlines} to a
260 non-@code{nil} value, @kbd{C-n} on the last line of a buffer creates
261 an additional line at the end and moves down onto it.
262
263 @node Erasing
264 @section Erasing Text
265
266 @table @kbd
267 @item @key{DEL}
268 Delete the character before point (@code{delete-backward-char}).
269 @item C-d
270 Delete the character after point (@code{delete-char}).
271 @item @key{DELETE}
272 @itemx @key{BACKSPACE}
273 One of these keys, whichever is the large key above the @key{RET} or
274 @key{ENTER} key, deletes the character before point, like @key{DEL}.
275 If that is @key{BACKSPACE}, and your keyboard also has @key{DELETE},
276 then @key{DELETE} deletes forwards, like @kbd{C-d}.
277 @item C-k
278 Kill to the end of the line (@code{kill-line}).
279 @item M-d
280 Kill forward to the end of the next word (@code{kill-word}).
281 @item M-@key{DEL}
282 Kill back to the beginning of the previous word
283 (@code{backward-kill-word}).
284 @end table
285
286 @cindex killing characters and lines
287 @cindex deleting characters and lines
288 @cindex erasing characters and lines
289 You already know about the @key{DEL} key which deletes the character
290 before point (that is, before the cursor). Another key, @kbd{Control-d}
291 (@kbd{C-d} for short), deletes the character after point (that is, the
292 character that the cursor is on). This shifts the rest of the text on
293 the line to the left. If you type @kbd{C-d} at the end of a line, it
294 joins together that line and the next line.
295
296 To erase a larger amount of text, use the @kbd{C-k} key, which kills a
297 line at a time. If you type @kbd{C-k} at the beginning or middle of a
298 line, it kills all the text up to the end of the line. If you type
299 @kbd{C-k} at the end of a line, it joins that line and the next line.
300
301 @xref{Killing}, for more flexible ways of killing text.
302
303 @node Undo
304 @section Undoing Changes
305 @cindex undo
306 @cindex changes, undoing
307
308 You can undo all the recent changes in the buffer text, up to a
309 certain point. Each buffer records changes individually, and the undo
310 command always applies to the current buffer. Usually each editing
311 command makes a separate entry in the undo records, but some commands
312 such as @code{query-replace} make many entries, and very simple commands
313 such as self-inserting characters are often grouped to make undoing less
314 tedious.
315
316 @table @kbd
317 @item C-x u
318 Undo one batch of changes---usually, one command worth (@code{undo}).
319 @item C-_
320 The same.
321 @item C-u C-x u
322 Undo one batch of changes in the region.
323 @end table
324
325 @kindex C-x u
326 @kindex C-_
327 @findex undo
328 The command @kbd{C-x u} or @kbd{C-_} is how you undo. The first time
329 you give this command, it undoes the last change. Point moves back to
330 where it was before the command that made the change.
331
332 Consecutive repetitions of @kbd{C-_} or @kbd{C-x u} undo earlier and
333 earlier changes, back to the limit of the undo information available.
334 If all recorded changes have already been undone, the undo command
335 prints an error message and does nothing.
336
337 Any command other than an undo command breaks the sequence of undo
338 commands. Starting from that moment, the previous undo commands become
339 ordinary changes that you can undo. Thus, to redo changes you have
340 undone, type @kbd{C-f} or any other command that will harmlessly break
341 the sequence of undoing, then type more undo commands.
342
343 @cindex selective undo
344 @kindex C-u C-x u
345 Ordinary undo applies to all changes made in the current buffer. You
346 can also perform @dfn{selective undo}, limited to the current region.
347 To do this, specify the region you want, then run the @code{undo}
348 command with a prefix argument (the value does not matter): @kbd{C-u C-x
349 u} or @kbd{C-u C-_}. This undoes the most recent change in the region.
350 To undo further changes in the same region, repeat the @code{undo}
351 command (no prefix argument is needed). In Transient Mark mode, any use
352 of @code{undo} when there is an active region performs selective undo;
353 you do not need a prefix argument.
354
355 If you notice that a buffer has been modified accidentally, the
356 easiest way to recover is to type @kbd{C-_} repeatedly until the stars
357 disappear from the front of the mode line. At this time, all the
358 modifications you made have been canceled. Whenever an undo command
359 makes the stars disappear from the mode line, it means that the buffer
360 contents are the same as they were when the file was last read in or
361 saved.
362
363 If you do not remember whether you changed the buffer deliberately,
364 type @kbd{C-_} once. When you see the last change you made undone, you
365 will see whether it was an intentional change. If it was an accident,
366 leave it undone. If it was deliberate, redo the change as described
367 above.
368
369 Not all buffers record undo information. Buffers whose names start with
370 spaces don't; these buffers are used internally by Emacs and its extensions
371 to hold text that users don't normally look at or edit.
372
373 You cannot undo mere cursor motion; only changes in the buffer
374 contents save undo information. However, some cursor motion commands
375 set the mark, so if you use these commands from time to time, you can
376 move back to the neighborhoods you have moved through by popping the
377 mark ring (@pxref{Mark Ring}).
378
379 @vindex undo-limit
380 @vindex undo-strong-limit
381 @cindex undo limit
382 When the undo information for a buffer becomes too large, Emacs
383 discards the oldest undo information from time to time (during garbage
384 collection). You can specify how much undo information to keep by
385 setting two variables: @code{undo-limit} and @code{undo-strong-limit}.
386 Their values are expressed in units of bytes of space.
387
388 The variable @code{undo-limit} sets a soft limit: Emacs keeps undo
389 data for enough commands to reach this size, and perhaps exceed it, but
390 does not keep data for any earlier commands beyond that. Its default
391 value is 20000. The variable @code{undo-strong-limit} sets a stricter
392 limit: the command which pushes the size past this amount is itself
393 forgotten. Its default value is 30000.
394
395 Regardless of the values of those variables, the most recent change is
396 never discarded, so there is no danger that garbage collection occurring
397 right after an unintentional large change might prevent you from undoing
398 it.
399
400 The reason the @code{undo} command has two keys, @kbd{C-x u} and
401 @kbd{C-_}, set up to run it is that it is worthy of a single-character
402 key, but on some keyboards it is not obvious how to type @kbd{C-_}.
403 @kbd{C-x u} is an alternative you can type straightforwardly on any
404 terminal.
405
406 @node Basic Files
407 @section Files
408
409 The commands described above are sufficient for creating and altering
410 text in an Emacs buffer; the more advanced Emacs commands just make
411 things easier. But to keep any text permanently you must put it in a
412 @dfn{file}. Files are named units of text which are stored by the
413 operating system for you to retrieve later by name. To look at or use
414 the contents of a file in any way, including editing the file with
415 Emacs, you must specify the file name.
416
417 Consider a file named @file{/usr/rms/foo.c}. In Emacs, to begin editing
418 this file, type
419
420 @example
421 C-x C-f /usr/rms/foo.c @key{RET}
422 @end example
423
424 @noindent
425 Here the file name is given as an @dfn{argument} to the command @kbd{C-x
426 C-f} (@code{find-file}). That command uses the @dfn{minibuffer} to
427 read the argument, and you type @key{RET} to terminate the argument
428 (@pxref{Minibuffer}).@refill
429
430 Emacs obeys the command by @dfn{visiting} the file: creating a buffer,
431 copying the contents of the file into the buffer, and then displaying
432 the buffer for you to edit. If you alter the text, you can @dfn{save}
433 the new text in the file by typing @kbd{C-x C-s} (@code{save-buffer}).
434 This makes the changes permanent by copying the altered buffer contents
435 back into the file @file{/usr/rms/foo.c}. Until you save, the changes
436 exist only inside Emacs, and the file @file{foo.c} is unaltered.
437
438 To create a file, just visit the file with @kbd{C-x C-f} as if it
439 already existed. This creates an empty buffer in which you can insert
440 the text you want to put in the file. The file is actually created when
441 you save this buffer with @kbd{C-x C-s}.
442
443 Of course, there is a lot more to learn about using files. @xref{Files}.
444
445 @node Basic Help
446 @section Help
447
448 @cindex getting help with keys
449 If you forget what a key does, you can find out with the Help
450 character, which is @kbd{C-h} (or @key{F1}, which is an alias for
451 @kbd{C-h}). Type @kbd{C-h k} followed by the key you want to know
452 about; for example, @kbd{C-h k C-n} tells you all about what @kbd{C-n}
453 does. @kbd{C-h} is a prefix key; @kbd{C-h k} is just one of its
454 subcommands (the command @code{describe-key}). The other subcommands of
455 @kbd{C-h} provide different kinds of help. Type @kbd{C-h} twice to get
456 a description of all the help facilities. @xref{Help}.@refill
457
458 @node Blank Lines
459 @section Blank Lines
460
461 @cindex inserting blank lines
462 @cindex deleting blank lines
463 Here are special commands and techniques for putting in and taking out
464 blank lines.
465
466 @c widecommands
467 @table @kbd
468 @item C-o
469 Insert one or more blank lines after the cursor (@code{open-line}).
470 @item C-x C-o
471 Delete all but one of many consecutive blank lines
472 (@code{delete-blank-lines}).
473 @end table
474
475 @kindex C-o
476 @kindex C-x C-o
477 @cindex blank lines
478 @findex open-line
479 @findex delete-blank-lines
480 When you want to insert a new line of text before an existing line, you
481 can do it by typing the new line of text, followed by @key{RET}.
482 However, it may be easier to see what you are doing if you first make a
483 blank line and then insert the desired text into it. This is easy to do
484 using the key @kbd{C-o} (@code{open-line}), which inserts a newline
485 after point but leaves point in front of the newline. After @kbd{C-o},
486 type the text for the new line. @kbd{C-o F O O} has the same effect as
487 @w{@kbd{F O O @key{RET}}}, except for the final location of point.
488
489 You can make several blank lines by typing @kbd{C-o} several times, or
490 by giving it a numeric argument to tell it how many blank lines to make.
491 @xref{Arguments}, for how. If you have a fill prefix, then @kbd{C-o}
492 command inserts the fill prefix on the new line, when you use it at the
493 beginning of a line. @xref{Fill Prefix}.
494
495 The easy way to get rid of extra blank lines is with the command
496 @kbd{C-x C-o} (@code{delete-blank-lines}). @kbd{C-x C-o} in a run of
497 several blank lines deletes all but one of them. @kbd{C-x C-o} on a
498 solitary blank line deletes that blank line. When point is on a
499 nonblank line, @kbd{C-x C-o} deletes any blank lines following that
500 nonblank line.
501
502 @node Continuation Lines
503 @section Continuation Lines
504
505 @cindex continuation line
506 @cindex wrapping
507 @cindex line wrapping
508 If you add too many characters to one line without breaking it with
509 @key{RET}, the line grows to occupy two (or more) lines on the screen.
510 On graphical displays, Emacs indicates line wrapping with small bent
511 arrows in the fringes to the left and right of the window. On
512 text-only terminals, Emacs displays a @samp{\} character at the right
513 margin of a screen line if it is not the last in its text line. This
514 @samp{\} character says that the following screen line is not really a
515 distinct line in the text, just a @dfn{continuation} of a line too
516 long to fit the screen. Continuation is also called @dfn{line
517 wrapping}.
518
519 When line wrapping occurs before a character that is wider than one
520 column, some columns at the end of the previous screen line may be
521 ``empty.'' In this case, Emacs displays additional @samp{\}
522 characters in the ``empty'' columns, just before the @samp{\}
523 character that indicates continuation.
524
525 Sometimes it is nice to have Emacs insert newlines automatically when
526 a line gets too long. Continuation on the screen does not do that. Use
527 Auto Fill mode (@pxref{Filling}) if that's what you want.
528
529 @vindex truncate-lines
530 @cindex truncation
531 As an alternative to continuation, Emacs can display long lines by
532 @dfn{truncation}. This means that all the characters that do not fit
533 in the width of the screen or window do not appear at all. They
534 remain in the buffer, temporarily invisible. On terminals, @samp{$}
535 in the last column informs you that the line has been truncated on the
536 display. On window systems, a small straight arrow in the fringe to
537 the right of the window indicates a truncated line.
538
539 @findex toggle-truncate-lines
540 Truncation instead of continuation happens whenever horizontal
541 scrolling is in use, and optionally in all side-by-side windows
542 (@pxref{Windows}). You can enable or disable truncation for a
543 particular buffer with the command @kbd{M-x toggle-truncate-lines}.
544
545 @xref{Display Custom}, for additional variables that affect how text is
546 displayed.
547
548 @node Position Info
549 @section Cursor Position Information
550
551 Here are commands to get information about the size and position of
552 parts of the buffer, and to count lines.
553
554 @table @kbd
555 @item M-x what-page
556 Display the page number of point, and the line number within the page.
557 @item M-x what-line
558 Display the line number of point in the buffer.
559 @item M-x line-number-mode
560 @itemx M-x column-number-mode
561 Toggle automatic display of current line number or column number.
562 @xref{Optional Mode Line}.
563 @item M-=
564 Display the number of lines in the current region (@code{count-lines-region}).
565 @xref{Mark}, for information about the region.
566 @item C-x =
567 Display the character code of character after point, character position of
568 point, and column of point (@code{what-cursor-position}).
569 @item M-x hl-line-mode
570 Enable or disable highlighting of the current line.
571 @end table
572
573 @findex what-page
574 @findex what-line
575 @cindex line number commands
576 @cindex location of point
577 @cindex cursor location
578 @cindex point location
579 There are two commands for working with line numbers. @kbd{M-x
580 what-line} computes the current line number and displays it in the echo
581 area. To go to a given line by number, use @kbd{M-x goto-line}; it
582 prompts you for the number. These line numbers count from one at the
583 beginning of the buffer.
584
585 You can also see the current line number in the mode line; @xref{Mode
586 Line}. If you narrow the buffer, then the line number in the mode line
587 is relative to the accessible portion (@pxref{Narrowing}). By contrast,
588 @code{what-line} shows both the line number relative to the narrowed
589 region and the line number relative to the whole buffer.
590
591 By contrast, @kbd{M-x what-page} counts pages from the beginning of
592 the file, and counts lines within the page, printing both numbers.
593 @xref{Pages}.
594
595 @kindex M-=
596 @findex count-lines-region
597 While on this subject, we might as well mention @kbd{M-=} (@code{count-lines-region}),
598 which prints the number of lines in the region (@pxref{Mark}).
599 @xref{Pages}, for the command @kbd{C-x l} which counts the lines in the
600 current page.
601
602 @kindex C-x =
603 @findex what-cursor-position
604 The command @kbd{C-x =} (@code{what-cursor-position}) can be used to find out
605 the column that the cursor is in, and other miscellaneous information about
606 point. It prints a line in the echo area that looks like this:
607
608 @smallexample
609 Char: c (0143, 99, 0x63) point=21044 of 26883(78%) column 53
610 @end smallexample
611
612 @noindent
613 (In fact, this is the output produced when point is before the
614 @samp{column} in the example.)
615
616 The four values after @samp{Char:} describe the character that follows
617 point, first by showing it and then by giving its character code in
618 octal, decimal and hex. For a non-ASCII multibyte character, these are
619 followed by @samp{ext} and the character's representation, in hex, in
620 the buffer's coding system, if that coding system encodes the character
621 safely and with a single byte (@pxref{Coding Systems}). If the
622 character's encoding is longer than one byte, Emacs shows @samp{ext ...}.
623
624 @samp{point=} is followed by the position of point expressed as a character
625 count. The front of the buffer counts as position 1, one character later
626 as 2, and so on. The next, larger, number is the total number of characters
627 in the buffer. Afterward in parentheses comes the position expressed as a
628 percentage of the total size.
629
630 @samp{column} is followed by the horizontal position of point, in
631 columns from the left edge of the window.
632
633 If the buffer has been narrowed, making some of the text at the
634 beginning and the end temporarily inaccessible, @kbd{C-x =} prints
635 additional text describing the currently accessible range. For example, it
636 might display this:
637
638 @smallexample
639 Char: C (0103, 67, 0x43) point=252 of 889(28%) <231 - 599> column 0
640 @end smallexample
641
642 @noindent
643 where the two extra numbers give the smallest and largest character
644 position that point is allowed to assume. The characters between those
645 two positions are the accessible ones. @xref{Narrowing}.
646
647 If point is at the end of the buffer (or the end of the accessible
648 part), the @w{@kbd{C-x =}} output does not describe a character after
649 point. The output might look like this:
650
651 @smallexample
652 point=26957 of 26956(100%) column 0
653 @end smallexample
654
655 @w{@kbd{C-u C-x =}} displays additional information about a character,
656 in place of the buffer coordinates and column: the character set name
657 and the codes that identify the character within that character set;
658 ASCII characters are identified as belonging to the @code{ASCII}
659 character set. In addition, the full character encoding, even if it
660 takes more than a single byte, is shown after @samp{ext}. Here's an
661 example for a Latin-1 character A with a grave accent in a buffer whose
662 coding system is iso-2022-7bit@footnote{On terminals that support
663 Latin-1 characters, the character shown after @samp{Char:} is displayed
664 as the actual glyph of A with grave accent.}:
665
666 @example
667 Char: @`A (04300, 2240, 0x8c0, ext ESC , A @@) (latin-iso8859-1 64)
668 @end example
669
670 @node Arguments
671 @section Numeric Arguments
672 @cindex numeric arguments
673 @cindex prefix arguments
674 @cindex arguments to commands
675
676 In mathematics and computer usage, the word @dfn{argument} means
677 ``data provided to a function or operation.'' You can give any Emacs
678 command a @dfn{numeric argument} (also called a @dfn{prefix argument}).
679 Some commands interpret the argument as a repetition count. For
680 example, @kbd{C-f} with an argument of ten moves forward ten characters
681 instead of one. With these commands, no argument is equivalent to an
682 argument of one. Negative arguments tell most such commands to move or
683 act in the opposite direction.
684
685 @kindex M-1
686 @kindex M-@t{-}
687 @findex digit-argument
688 @findex negative-argument
689 If your terminal keyboard has a @key{META} key, the easiest way to
690 specify a numeric argument is to type digits and/or a minus sign while
691 holding down the @key{META} key. For example,
692 @example
693 M-5 C-n
694 @end example
695 @noindent
696 would move down five lines. The characters @kbd{Meta-1}, @kbd{Meta-2},
697 and so on, as well as @kbd{Meta--}, do this because they are keys bound
698 to commands (@code{digit-argument} and @code{negative-argument}) that
699 are defined to contribute to an argument for the next command. Digits
700 and @kbd{-} modified with Control, or Control and Meta, also specify
701 numeric arguments.
702
703 @kindex C-u
704 @findex universal-argument
705 Another way of specifying an argument is to use the @kbd{C-u}
706 (@code{universal-argument}) command followed by the digits of the
707 argument. With @kbd{C-u}, you can type the argument digits without
708 holding down modifier keys; @kbd{C-u} works on all terminals. To type a
709 negative argument, type a minus sign after @kbd{C-u}. Just a minus sign
710 without digits normally means @minus{}1.
711
712 @kbd{C-u} followed by a character which is neither a digit nor a minus
713 sign has the special meaning of ``multiply by four.'' It multiplies the
714 argument for the next command by four. @kbd{C-u} twice multiplies it by
715 sixteen. Thus, @kbd{C-u C-u C-f} moves forward sixteen characters. This
716 is a good way to move forward ``fast,'' since it moves about 1/5 of a line
717 in the usual size screen. Other useful combinations are @kbd{C-u C-n},
718 @kbd{C-u C-u C-n} (move down a good fraction of a screen), @kbd{C-u C-u
719 C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four
720 lines).@refill
721
722 Some commands care only about whether there is an argument, and not about
723 its value. For example, the command @kbd{M-q} (@code{fill-paragraph}) with
724 no argument fills text; with an argument, it justifies the text as well.
725 (@xref{Filling}, for more information on @kbd{M-q}.) Plain @kbd{C-u} is a
726 handy way of providing an argument for such commands.
727
728 Some commands use the value of the argument as a repeat count, but do
729 something peculiar when there is no argument. For example, the command
730 @kbd{C-k} (@code{kill-line}) with argument @var{n} kills @var{n} lines,
731 including their terminating newlines. But @kbd{C-k} with no argument is
732 special: it kills the text up to the next newline, or, if point is right at
733 the end of the line, it kills the newline itself. Thus, two @kbd{C-k}
734 commands with no arguments can kill a nonblank line, just like @kbd{C-k}
735 with an argument of one. (@xref{Killing}, for more information on
736 @kbd{C-k}.)@refill
737
738 A few commands treat a plain @kbd{C-u} differently from an ordinary
739 argument. A few others may treat an argument of just a minus sign
740 differently from an argument of @minus{}1. These unusual cases are
741 described when they come up; they are always for reasons of convenience
742 of use of the individual command.
743
744 You can use a numeric argument to insert multiple copies of a
745 character. This is straightforward unless the character is a digit; for
746 example, @kbd{C-u 6 4 a} inserts 64 copies of the character @samp{a}.
747 But this does not work for inserting digits; @kbd{C-u 6 4 1} specifies
748 an argument of 641, rather than inserting anything. To separate the
749 digit to insert from the argument, type another @kbd{C-u}; for example,
750 @kbd{C-u 6 4 C-u 1} does insert 64 copies of the character @samp{1}.
751
752 We use the term ``prefix argument'' as well as ``numeric argument'' to
753 emphasize that you type the argument before the command, and to
754 distinguish these arguments from minibuffer arguments that come after
755 the command.
756
757 @node Repeating
758 @section Repeating a Command
759 @cindex repeating a command
760
761 @kindex C-x z
762 @findex repeat
763 The command @kbd{C-x z} (@code{repeat}) provides another way to repeat
764 an Emacs command many times. This command repeats the previous Emacs
765 command, whatever that was. Repeating a command uses the same arguments
766 that were used before; it does not read new arguments each time.
767
768 To repeat the command more than once, type additional @kbd{z}'s: each
769 @kbd{z} repeats the command one more time. Repetition ends when you
770 type a character other than @kbd{z}, or press a mouse button.
771
772 For example, suppose you type @kbd{C-u 2 0 C-d} to delete 20
773 characters. You can repeat that command (including its argument) three
774 additional times, to delete a total of 80 characters, by typing @kbd{C-x
775 z z z}. The first @kbd{C-x z} repeats the command once, and each
776 subsequent @kbd{z} repeats it once again.
777