Merge changes from emacs-23 branch
[bpt/emacs.git] / doc / emacs / basic.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
3 @c Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Basic, Minibuffer, Exiting, Top
6 @chapter Basic Editing Commands
7
8 @kindex C-h t
9 @findex help-with-tutorial
10 Here we explain the basics of how to enter text, make corrections,
11 and save the text in a file. If this material is new to you, we
12 suggest you first run the Emacs learn-by-doing tutorial, by typing
13 @kbd{Control-h t} inside Emacs. (@code{help-with-tutorial}).
14
15 @menu
16
17 * Inserting Text:: Inserting text by simply typing it.
18 * Moving Point:: Moving the cursor to the place where you want to
19 change something.
20 * Erasing:: Deleting and killing text.
21 * Basic Undo:: Undoing recent changes in the text.
22 * Files: Basic Files. Visiting, creating, and saving files.
23 * Help: Basic Help. Asking what a character does.
24 * Blank Lines:: Making and deleting blank lines.
25 * Continuation Lines:: How Emacs displays lines too wide for the screen.
26 * Position Info:: What page, line, row, or column is point on?
27 * Arguments:: Numeric arguments for repeating a command N times.
28 * Repeating:: Repeating the previous command quickly.
29 @end menu
30
31 @node Inserting Text
32 @section Inserting Text
33
34 @cindex insertion
35 @cindex graphic characters
36 You can insert an ordinary @dfn{graphic character} (e.g., @samp{a},
37 @samp{B}, @samp{3}, and @samp{=}) by typing the associated key. This
38 adds the character to the buffer at point. Insertion moves point
39 forward, so that point remains just after the inserted text.
40 @xref{Point}.
41
42 @kindex RET
43 @cindex newline
44 To end a line and start a new one, type @key{RET}. This key may be
45 labeled @key{Return} or @key{Enter} on your keyboard, but we refer to
46 it as @key{RET} in this manual. Pressing it inserts a newline
47 character in the buffer. If point is at the end of the line, this
48 creates a new blank line after it; if point is in the middle of a
49 line, the line is split at that position.
50
51 As we explain later in this manual, you can change the way Emacs
52 handles text insertion by turning on @dfn{minor modes}. For instance,
53 if you turn on a minor mode called @dfn{Auto Fill} mode, Emacs can
54 split lines automatically when they become too long (@pxref{Filling}).
55 If you turn on a minor mode called @dfn{Overwrite} mode, inserted
56 characters replace (overwrite) existing text, instead of shoving it to
57 the right. @xref{Minor Modes}.
58
59 @cindex quoting
60 @kindex C-q
61 @findex quoted-insert
62 Only graphic characters can be inserted by typing the associated
63 key; other keys act as editing commands and do not insert themselves.
64 For instance, @kbd{DEL} runs the command @code{delete-backward-char}
65 by default (some modes bind it to a different command); it does not
66 insert a literal @samp{DEL} character (@acronym{ASCII} character code
67 127).
68
69 To insert a non-graphic character, or a character that your keyboard
70 does not support, first @dfn{quote} it by typing @kbd{C-q}
71 (@code{quoted-insert}). There are two ways to use @kbd{C-q}:
72
73 @itemize @bullet
74 @item
75 @kbd{C-q} followed by any non-graphic character (even @kbd{C-g})
76 inserts that character. For instance, @kbd{C-q @key{DEL}} inserts a
77 literal @samp{DEL} character.
78
79 @item
80 @kbd{C-q} followed by a sequence of octal digits inserts the character
81 with the specified octal character code. You can use any number of
82 octal digits; any non-digit terminates the sequence. If the
83 terminating character is @key{RET}, it serves only to terminate the
84 sequence. Any other non-digit terminates the sequence and then acts
85 as normal input---thus, @kbd{C-q 1 0 1 B} inserts @samp{AB}.
86
87 The use of octal sequences is disabled in ordinary non-binary
88 Overwrite mode, to give you a convenient way to insert a digit instead
89 of overwriting with it.
90 @end itemize
91
92 @vindex read-quoted-char-radix
93 @noindent
94 To use decimal or hexadecimal instead of octal, set the variable
95 @code{read-quoted-char-radix} to 10 or 16. If the radix is 16,
96 the letters @kbd{a} to @kbd{f} serve as part of a character code,
97 just like digits. Case is ignored.
98
99 A numeric argument tells @kbd{C-q} how many copies of the quoted
100 character to insert (@pxref{Arguments}).
101
102 @findex ucs-insert
103 @kindex C-x 8 RET
104 @cindex Unicode characters, inserting
105 @cindex insert Unicode character
106 @cindex characters, inserting by name or code-point
107 Instead of @kbd{C-q}, you can use @kbd{C-x 8 @key{RET}}
108 (@code{ucs-insert}) to insert a character based on its Unicode name or
109 code-point. This command prompts for a character to insert, using
110 the minibuffer; you can specify the character using either (i) the
111 character's name in the Unicode standard, or (ii) the character's
112 code-point in the Unicode standard. If you specify the character's
113 name, the command provides completion.
114
115 @node Moving Point
116 @section Changing the Location of Point
117
118 @cindex arrow keys
119 @cindex moving point
120 @cindex movement
121 @cindex cursor motion
122 @cindex moving the cursor
123 To do more than insert characters, you have to know how to move
124 point (@pxref{Point}). The keyboard commands @kbd{C-f}, @kbd{C-b},
125 @kbd{C-n}, and @kbd{C-p} move point to the right, left, up and down
126 respectively. These are equivalent to the commands @kbd{@key{right}},
127 @kbd{@key{left}}, @kbd{@key{down}}, and @kbd{@key{up}}, entered using
128 the @dfn{arrow keys} present on many keyboards. Many Emacs users find
129 that it is slower to use the arrow keys than the equivalent control
130 keys. You can also click the left mouse button to move point to the
131 position clicked. Emacs also provides a variety of additional
132 keyboard commands that move point in more sophisticated ways.
133
134 @kindex C-a
135 @kindex C-e
136 @kindex C-f
137 @kindex C-b
138 @kindex C-n
139 @kindex C-p
140 @kindex M->
141 @kindex M-<
142 @kindex M-r
143 @kindex LEFT
144 @kindex RIGHT
145 @kindex UP
146 @kindex DOWN
147 @findex move-beginning-of-line
148 @findex move-end-of-line
149 @findex forward-char
150 @findex backward-char
151 @findex right-char
152 @findex left-char
153 @findex next-line
154 @findex previous-line
155 @findex beginning-of-buffer
156 @findex end-of-buffer
157 @findex goto-char
158 @findex goto-line
159 @findex move-to-window-line
160 @table @kbd
161 @item C-a
162 @itemx @key{Home}
163 Move to the beginning of the line (@code{move-beginning-of-line}).
164 @item C-e
165 @itemx @key{End}
166 Move to the end of the line (@code{move-end-of-line}).
167 @item C-f
168 Move forward one character (@code{forward-char}).
169 @item @key{right}
170 Move one character to the right (@code{right-char}). This
171 moves one character forward in text that is read in the usual
172 left-to-right direction, but one character @emph{backward} if the text
173 is read right-to-left, as needed for right-to-left scripts such as
174 Arabic. @xref{Bidirectional Editing}.
175 @item C-b
176 Move backward one character (@code{backward-char}).
177 @item @key{left}
178 Move one character to the left (@code{left-char}). This
179 moves one character backward in left-to-right text and one character
180 forward in right-to-left text.
181 @item M-f
182 @itemx M-@key{right}
183 Move forward one word (@code{forward-word}).
184 @item C-@key{right}
185 Move one word to the right (@code{right-word}). This moves one word
186 forward in left-to-right text and one word backward in right-to-left
187 text.
188 @item M-b
189 @itemx M-@key{left}
190 Move backward one word (@code{backward-word}).
191 @item C-@key{left}
192 Move one word to the left (@code{left-word}). This moves one word
193 backward in left-to-right text and one word forward in right-to-left
194 text.
195 @item C-n
196 @itemx @key{down}
197 Move down one screen line (@code{next-line}). This command attempts
198 to keep the horizontal position unchanged, so if you start in the
199 middle of one line, you move to the middle of the next.
200 @item C-p
201 @itemx @key{up}
202 Move up one screen line (@code{previous-line}). This command
203 preserves position within the line, like @kbd{C-n}.
204 @item M-r
205 Without moving the text on the screen, reposition point on the left
206 margin of the center-most text line of the window; on subsequent
207 consecutive invocations, move point to the left margin of the top-most
208 line, the bottom-most line, and so forth, in cyclic order
209 (@code{move-to-window-line-top-bottom}).
210
211 A numeric argument says which screen line to place point on, counting
212 downward from the top of the window (zero means the top line). A
213 negative argument counts lines up from the bottom (@minus{}1 means the
214 bottom line).
215
216 @item M-<
217 Move to the top of the buffer (@code{beginning-of-buffer}). With
218 numeric argument @var{n}, move to @var{n}/10 of the way from the top.
219 @xref{Arguments}, for more information on numeric arguments.@refill
220 @item M->
221 Move to the end of the buffer (@code{end-of-buffer}).
222 @item C-v
223 @itemx @key{PageDown}
224 @itemx @key{next}
225 Scroll the display one screen forward, and move point if necessary to
226 put it on the screen (@code{scroll-up}). If your keyboard has a
227 @key{PageDown} key (sometimes labelled @key{next}), it does the same
228 thing as @key{C-v}. Scrolling commands are described further in
229 @ref{Scrolling}.
230 @item M-v
231 @itemx @key{PageUp}
232 @itemx @key{prior}
233 Scroll one screen backward, and move point if necessary to put it on
234 the screen (@code{scroll-down}). If your keyboard has a @key{PageUp}
235 key (sometimes labelled @key{prior}), it does the same thing as
236 @kbd{M-v}.
237 @item M-x goto-char
238 Read a number @var{n} and move point to buffer position @var{n}.
239 Position 1 is the beginning of the buffer.
240 @item M-g M-g
241 @itemx M-g g
242 Read a number @var{n} and move point to the beginning of line number
243 @var{n} (@code{goto-line}). Line 1 is the beginning of the buffer. If
244 point is on or just after a number in the buffer, that is the default
245 for @var{n}. Just type @key{RET} in the minibuffer to use it. You can
246 also specify @var{n} by giving @kbd{M-g M-g} a numeric prefix argument.
247 @xref{Select Buffer}, for the behavior of @kbd{M-g M-g} when you give it
248 a plain prefix argument.
249 @item C-x C-n
250 @findex set-goal-column
251 @kindex C-x C-n
252 Use the current column of point as the @dfn{semipermanent goal column}
253 for @kbd{C-n} and @kbd{C-p} (@code{set-goal-column}). When a
254 semipermanent goal column is in effect, those commands always try to
255 move to this column, or as close as possible to it, after moving
256 vertically. The goal column remains in effect until canceled.
257 @item C-u C-x C-n
258 Cancel the goal column. Henceforth, @kbd{C-n} and @kbd{C-p} try to
259 preserve the horizontal position, as usual.
260 @end table
261
262 @vindex line-move-visual
263 When a line of text in the buffer is longer than the width of the
264 window, Emacs usually displays it on two or more @dfn{screen lines}.
265 For convenience, @kbd{C-n} and @kbd{C-p} move point by screen lines,
266 as do the equivalent keys @kbd{@key{down}} and @kbd{@key{up}}. You
267 can force these commands to move according to @dfn{logical lines}
268 (i.e., according to the text lines in the buffer) by setting the
269 variable @code{line-move-visual} to @code{nil}; if a logical line
270 occupies multiple screen lines, the cursor then skips over the
271 additional screen lines. Moving by logical lines was the default
272 behavior prior to Emacs 23.1. For details, see @ref{Continuation
273 Lines}. @xref{Variables}, for how to set variables such as
274 @code{line-move-visual}.
275
276 Unlike @kbd{C-n} and @kbd{C-p}, most of the Emacs commands that work
277 on lines work on @emph{logical} lines. For instance, @kbd{C-a}
278 (@code{move-beginning-of-line}) and @kbd{C-e}
279 (@code{move-end-of-line}) respectively move to the beginning and end
280 of the logical line. Whenever we encounter commands that work on
281 screen lines, such as @kbd{C-n} and @kbd{C-p}, we will point these
282 out.
283
284 @vindex track-eol
285 When @code{line-move-visual} is @code{nil}, you can also set the
286 variable @code{track-eol} to a non-@code{nil} value. Then @kbd{C-n}
287 and @kbd{C-p}, when starting at the end of the logical line, move to
288 the end of the next logical line. Normally, @code{track-eol} is
289 @code{nil}.
290
291 @vindex next-line-add-newlines
292 @kbd{C-n} normally stops at the end of the buffer when you use it on
293 the last line of the buffer. However, if you set the variable
294 @code{next-line-add-newlines} to a non-@code{nil} value, @kbd{C-n} on
295 the last line of a buffer creates an additional line at the end and
296 moves down into it.
297
298 @node Erasing
299 @section Erasing Text
300
301 @table @kbd
302 @item @key{DEL}
303 @itemx @key{Backspace}
304 Delete the character before point (@code{delete-backward-char}).
305 @item C-d
306 @itemx @key{Delete}
307 Delete the character after point (@code{delete-char}).
308 @item C-k
309 Kill to the end of the line (@code{kill-line}).
310 @item M-d
311 Kill forward to the end of the next word (@code{kill-word}).
312 @item M-@key{DEL}
313 Kill back to the beginning of the previous word
314 (@code{backward-kill-word}).
315 @end table
316
317 The key @kbd{@key{DEL}} (@code{delete-backward-char}) removes the
318 character before point, moving the cursor and all the characters after
319 it backwards. On most keyboards, @key{DEL} is labelled
320 @key{Backspace}, but we refer to it as @key{DEL} in this manual. Do
321 not confuse @key{DEL} with another key, labelled @key{Delete}, that
322 exists on many keyboards; we will discuss @key{Delete} momentarily.
323
324 Typing @key{DEL} when the cursor is at the beginning of a line
325 deletes the preceding newline character, joining the line with the one
326 before it.
327
328 On some text-only terminals, Emacs may not recognize the @key{DEL}
329 key properly. If @key{DEL} does not do the right thing (e.g., if it
330 deletes characters forwards), see @ref{DEL Does Not Delete}.
331
332 @cindex killing characters and lines
333 @cindex deleting characters and lines
334 @cindex erasing characters and lines
335 The key @kbd{C-d} (@code{delete-char}) deletes the character after
336 point, i.e., the character under the cursor. This shifts the rest of
337 the text on the line to the left. If you type @kbd{C-d} at the end of
338 a line, it joins that line with the following line. This command is
339 also bound to the key labelled @key{Delete} on many keyboards.
340
341 To erase a larger amount of text, use the @kbd{C-k} key, which
342 erases (kills) a line at a time. If you type @kbd{C-k} at the
343 beginning or middle of a line, it kills all the text up to the end of
344 the line. If you type @kbd{C-k} at the end of a line, it joins that
345 line with the following line.
346
347 To learn more about killing text, see @ref{Killing}.
348
349 @node Basic Undo
350 @section Undoing Changes
351
352 @table @kbd
353 @item C-/
354 Undo one entry of the undo records---usually, one command worth
355 (@code{undo}).
356 @itemx C-x u
357 @item C-_
358 The same.
359 @end table
360
361 Emacs records a list of changes made in the buffer text, so you can
362 undo recent changes. This is done using the @code{undo} command,
363 which is bound to @kbd{C-/} (as well as @kbd{C-x u} and @kbd{C-_}).
364 Normally, this command undoes the last change, moving point back to
365 where it was before the change. The undo command applies only to
366 changes in the buffer; you can't use it to undo cursor motion.
367
368 Although each editing command usually makes a separate entry in the
369 undo records, very simple commands may be grouped together.
370 Sometimes, an entry may cover just part of a complex command.
371
372 If you repeat @kbd{C-/} (or its aliases), each repetition undoes
373 another, earlier change, back to the limit of the undo information
374 available. If all recorded changes have already been undone, the undo
375 command displays an error message and does nothing.
376
377 To learn more about the @code{undo} command, see @ref{Undo}.
378
379 @node Basic Files
380 @section Files
381
382 Text that you insert in an Emacs buffer lasts only as long as the
383 Emacs session. To keep any text permanently, you must put it in a
384 @dfn{file}. Files are named units of text which are stored by the
385 operating system for you to retrieve later by name. To use the
386 contents of a file in any way, including editing it with Emacs, you
387 must specify the file name.
388
389 Suppose there is a file named @file{test.emacs} in your home
390 directory. To begin editing this file in Emacs, type
391
392 @example
393 C-x C-f test.emacs @key{RET}
394 @end example
395
396 @noindent
397 Here the file name is given as an @dfn{argument} to the command @kbd{C-x
398 C-f} (@code{find-file}). That command uses the @dfn{minibuffer} to
399 read the argument, and you type @key{RET} to terminate the argument
400 (@pxref{Minibuffer}).
401
402 Emacs obeys this command by @dfn{visiting} the file: it creates a
403 buffer, copies the contents of the file into the buffer, and then
404 displays the buffer for editing. If you alter the text, you can
405 @dfn{save} the new text in the file by typing @kbd{C-x C-s}
406 (@code{save-buffer}). This copies the altered buffer contents back
407 into the file @file{test.emacs}, making them permanent. Until you
408 save, the changed text exists only inside Emacs, and the file
409 @file{test.emacs} is unaltered.
410
411 To create a file, just visit it with @kbd{C-x C-f} as if it already
412 existed. This creates an empty buffer, in which you can insert the
413 text you want to put in the file. Emacs actually creates the file the
414 first time you save this buffer with @kbd{C-x C-s}.
415
416 To learn more about using files in Emacs, see @ref{Files}.
417
418 @node Basic Help
419 @section Help
420
421 @cindex getting help with keys
422 If you forget what a key does, you can find out with the Help
423 character, which is @kbd{C-h} (or @key{F1}, which is an alias for
424 @kbd{C-h}). Type @kbd{C-h k}, followed by the key of interest; for
425 example, @kbd{C-h k C-n} tells you what @kbd{C-n} does. @kbd{C-h} is
426 a prefix key; @kbd{C-h k} is just one of its subcommands (the command
427 @code{describe-key}). The other subcommands of @kbd{C-h} provide
428 different kinds of help. Type @kbd{C-h} twice to get a description of
429 all the help facilities. @xref{Help}.
430
431 @node Blank Lines
432 @section Blank Lines
433
434 @cindex inserting blank lines
435 @cindex deleting blank lines
436 Here are special commands and techniques for inserting and deleting
437 blank lines.
438
439 @table @kbd
440 @item C-o
441 Insert a blank line after the cursor (@code{open-line}).
442 @item C-x C-o
443 Delete all but one of many consecutive blank lines
444 (@code{delete-blank-lines}).
445 @end table
446
447 @kindex C-o
448 @kindex C-x C-o
449 @cindex blank lines
450 @findex open-line
451 @findex delete-blank-lines
452 We have seen how @kbd{@key{RET}} (@code{newline}) starts a new line
453 of text. However, it may be easier to see what you are doing if you
454 first make a blank line and then insert the desired text into it.
455 This is easy to do using the key @kbd{C-o} (@code{open-line}), which
456 inserts a newline after point but leaves point in front of the
457 newline. After @kbd{C-o}, type the text for the new line.
458
459 You can make several blank lines by typing @kbd{C-o} several times, or
460 by giving it a numeric argument specifying how many blank lines to make.
461 @xref{Arguments}, for how. If you have a fill prefix, the @kbd{C-o}
462 command inserts the fill prefix on the new line, if typed at the
463 beginning of a line. @xref{Fill Prefix}.
464
465 The easy way to get rid of extra blank lines is with the command
466 @kbd{C-x C-o} (@code{delete-blank-lines}). If point lies within a run
467 of several blank lines, @kbd{C-x C-o} deletes all but one of them. If
468 point is on a single blank line, @kbd{C-x C-o} deletes it. If point
469 is on a nonblank line, @kbd{C-x C-o} deletes all following blank
470 lines, if any exists.
471
472 @node Continuation Lines
473 @section Continuation Lines
474
475 @cindex continuation line
476 @cindex wrapping
477 @cindex line wrapping
478 @cindex fringes, and continuation lines
479 Sometimes, a line of text in the buffer---a @dfn{logical line}---is
480 too long to fit in the window, and Emacs displays it as two or more
481 @dfn{screen lines}. This is called @dfn{line wrapping} or
482 @dfn{continuation}, and the long logical line is called a
483 @dfn{continued line}. On a graphical display, Emacs indicates line
484 wrapping with small bent arrows in the left and right window fringes.
485 On a text-only terminal, Emacs indicates line wrapping by displaying a
486 @samp{\} character at the right margin.
487
488 Most commands that act on lines act on logical lines, not screen
489 lines. For instance, @kbd{C-k} kills a logical line. As described
490 earlier, @kbd{C-n} (@code{next-line}) and @kbd{C-p}
491 (@code{previous-line}) are special exceptions: they move point down
492 and up, respectively, by one screen line (@pxref{Moving Point}).
493
494 @cindex truncation
495 @cindex line truncation, and fringes
496 Emacs can optionally @dfn{truncate} long logical lines instead of
497 continuing them. This means that every logical line occupies a single
498 screen line; if it is longer than the width of the window, the rest of
499 the line is not displayed. On a graphical display, a truncated line
500 is indicated by a small straight arrow in the right fringe; on a
501 text-only terminal, it is indicated by a @samp{$} character in the
502 right margin. @xref{Line Truncation}.
503
504 By default, continued lines are wrapped at the right window edge.
505 Since the wrapping may occur in the middle of a word, continued lines
506 can be difficult to read. The usual solution is to break your lines
507 before they get too long, by inserting newlines. If you prefer, you
508 can make Emacs insert a newline automatically when a line gets too
509 long, by using Auto Fill mode. @xref{Filling}.
510
511 @cindex word wrap
512 Sometimes, you may need to edit files containing many long logical
513 lines, and it may not be practical to break them all up by adding
514 newlines. In that case, you can use Visual Line mode, which enables
515 @dfn{word wrapping}: instead of wrapping long lines exactly at the
516 right window edge, Emacs wraps them at the word boundaries (i.e.,
517 space or tab characters) nearest to the right window edge. Visual
518 Line mode also redefines editing commands such as @code{C-a},
519 @code{C-n}, and @code{C-k} to operate on screen lines rather than
520 logical lines. @xref{Visual Line Mode}.
521
522 @node Position Info
523 @section Cursor Position Information
524
525 Here are commands to get information about the size and position of
526 parts of the buffer, and to count lines.
527
528 @table @kbd
529 @item M-x what-page
530 Display the page number of point, and the line number within that page.
531 @item M-x what-line
532 Display the line number of point in the whole buffer.
533 @item M-x line-number-mode
534 @itemx M-x column-number-mode
535 Toggle automatic display of the current line number or column number.
536 @xref{Optional Mode Line}.
537 @item M-x count-lines-region
538 Display the number of lines in the current region. Normally bound to
539 @kbd{M-=}, except in a few specialist modes. @xref{Mark}, for
540 information about the region.
541 @item M-x count-words-region
542 Display the number of words in the current region.
543 @item C-x =
544 Display the character code of character after point, character position of
545 point, and column of point (@code{what-cursor-position}).
546 @item M-x hl-line-mode
547 Enable or disable highlighting of the current line. @xref{Cursor
548 Display}.
549 @item M-x size-indication-mode
550 Toggle automatic display of the size of the buffer.
551 @xref{Optional Mode Line}.
552 @end table
553
554 @findex what-page
555 @findex what-line
556 @cindex line number commands
557 @cindex location of point
558 @cindex cursor location
559 @cindex point location
560 @kbd{M-x what-line} displays the current line number in the echo
561 area. This command is usually redundant, because the current line
562 number is shown in the mode line (@pxref{Mode Line}). However, if you
563 narrow the buffer, the mode line shows the line number relative to
564 the accessible portion (@pxref{Narrowing}). By contrast,
565 @code{what-line} displays both the line number relative to the
566 narrowed region and the line number relative to the whole buffer.
567
568 @kbd{M-x what-page} counts pages from the beginning of the file, and
569 counts lines within the page, showing both numbers in the echo area.
570 @xref{Pages}.
571
572 @kindex M-=
573 @findex count-lines-region
574 Use @kbd{M-x count-lines-region} (normally bound to @kbd{M-=}) to
575 display the number of lines in the region (@pxref{Mark}). @xref{Pages},
576 for the command @kbd{C-x l} which counts the lines in the current page.
577
578 @kindex C-x =
579 @findex what-cursor-position
580 The command @kbd{C-x =} (@code{what-cursor-position}) shows
581 information about the current cursor position and the buffer contents
582 at that position. It displays a line in the echo area that looks like
583 this:
584
585 @smallexample
586 Char: c (99, #o143, #x63) point=28062 of 36168 (78%) column=53
587 @end smallexample
588
589 After @samp{Char:}, this shows the character in the buffer at point.
590 The text inside the parenthesis shows the corresponding decimal, octal
591 and hex character codes; for more information about how @kbd{C-x =}
592 displays character information, see @ref{International Chars}. After
593 @samp{point=} is the position of point as a character count (the first
594 character in the buffer is position 1, the second character is
595 position 2, and so on). The number after that is the total number of
596 characters in the buffer, and the number in parenthesis expresses the
597 position as a percentage of the total. After @samp{column=} is the
598 horizontal position of point, in columns counting from the left edge
599 of the window.
600
601 If the buffer has been narrowed, making some of the text at the
602 beginning and the end temporarily inaccessible, @kbd{C-x =} displays
603 additional text describing the currently accessible range. For
604 example, it might display this:
605
606 @smallexample
607 Char: C (67, #o103, #x43) point=252 of 889 (28%) <231-599> column=0
608 @end smallexample
609
610 @noindent
611 where the two extra numbers give the smallest and largest character
612 position that point is allowed to assume. The characters between
613 those two positions are the accessible ones. @xref{Narrowing}.
614
615 @node Arguments
616 @section Numeric Arguments
617 @cindex numeric arguments
618 @cindex prefix arguments
619 @cindex arguments to commands
620
621 In the terminology of mathematics and computing, @dfn{argument}
622 means ``data provided to a function or operation.'' You can give any
623 Emacs command a @dfn{numeric argument} (also called a @dfn{prefix
624 argument}). Some commands interpret the argument as a repetition
625 count. For example, giving @kbd{C-f} an argument of ten causes it to
626 move point forward by ten characters instead of one. With these
627 commands, no argument is equivalent to an argument of one, and
628 negative arguments cause them to move or act in the opposite
629 direction.
630
631 @kindex M-1
632 @kindex M-@t{-}
633 @findex digit-argument
634 @findex negative-argument
635 The easiest way to specify a numeric argument is to type a digit
636 and/or a minus sign while holding down the @key{META} key. For
637 example,
638
639 @example
640 M-5 C-n
641 @end example
642
643 @noindent
644 moves down five lines. The keys @kbd{M-1}, @kbd{M-2}, and so on, as
645 well as @kbd{M--}, are bound to commands (@code{digit-argument} and
646 @code{negative-argument}) that set up an argument for the next
647 command. @kbd{Meta--} without digits normally means @minus{}1.
648
649 If you enter more than one digit, you need not hold down the
650 @key{META} key for the second and subsequent digits. Thus, to move
651 down fifty lines, type
652
653 @example
654 M-5 0 C-n
655 @end example
656
657 @noindent
658 Note that this @emph{does not} insert five copies of @samp{0} and move
659 down one line, as you might expect---the @samp{0} is treated as part
660 of the prefix argument.
661
662 (What if you do want to insert five copies of @samp{0}? Type @kbd{M-5
663 C-u 0}. Here, @kbd{C-u} ``terminates'' the prefix argument, so that
664 the next keystroke begins the command that you want to execute. Note
665 that this meaning of @kbd{C-u} applies only to this case. For the
666 usual role of @kbd{C-u}, see below.)
667
668 @kindex C-u
669 @findex universal-argument
670 Instead of typing @kbd{M-1}, @kbd{M-2}, and so on, another way to
671 specify a numeric argument is to type @kbd{C-u}
672 (@code{universal-argument}) followed by some digits, or (for a
673 negative argument) a minus sign followed by digits. A minus sign
674 without digits normally means @minus{}1.
675
676 @kbd{C-u} alone has the special meaning of ``four times'': it
677 multiplies the argument for the next command by four. @kbd{C-u C-u}
678 multiplies it by sixteen. Thus, @kbd{C-u C-u C-f} moves forward
679 sixteen characters. Other useful combinations are @kbd{C-u C-n},
680 @kbd{C-u C-u C-n} (move down a good fraction of a screen), @kbd{C-u
681 C-u C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four
682 lines).
683
684 You can use a numeric argument before a self-inserting character to
685 insert multiple copies of it. This is straightforward when the
686 character is not a digit; for example, @kbd{C-u 6 4 a} inserts 64
687 copies of the character @samp{a}. But this does not work for
688 inserting digits; @kbd{C-u 6 4 1} specifies an argument of 641. You
689 can separate the argument from the digit to insert with another
690 @kbd{C-u}; for example, @kbd{C-u 6 4 C-u 1} does insert 64 copies of
691 the character @samp{1}.
692
693 Some commands care whether there is an argument, but ignore its
694 value. For example, the command @kbd{M-q} (@code{fill-paragraph})
695 fills text; with an argument, it justifies the text as well.
696 (@xref{Filling}, for more information on @kbd{M-q}.) For these
697 commands, it is enough to the argument with a single @kbd{C-u}.
698
699 Some commands use the value of the argument as a repeat count, but
700 do something special when there is no argument. For example, the
701 command @kbd{C-k} (@code{kill-line}) with argument @var{n} kills
702 @var{n} lines, including their terminating newlines. But @kbd{C-k}
703 with no argument is special: it kills the text up to the next newline,
704 or, if point is right at the end of the line, it kills the newline
705 itself. Thus, two @kbd{C-k} commands with no arguments can kill a
706 nonblank line, just like @kbd{C-k} with an argument of one.
707 (@xref{Killing}, for more information on @kbd{C-k}.)
708
709 A few commands treat a plain @kbd{C-u} differently from an ordinary
710 argument. A few others may treat an argument of just a minus sign
711 differently from an argument of @minus{}1. These unusual cases are
712 described when they come up; they exist to make an individual command
713 more convenient, and they are documented in that command's
714 documentation string.
715
716 We use the term ``prefix argument'' as well as ``numeric argument,''
717 to emphasize that you type these argument before the command, and to
718 distinguish them from minibuffer arguments that come after the
719 command.
720
721 @node Repeating
722 @section Repeating a Command
723 @cindex repeating a command
724
725 Many simple commands, such as those invoked with a single key or
726 with @kbd{M-x @var{command-name} @key{RET}}, can be repeated by
727 invoking them with a numeric argument that serves as a repeat count
728 (@pxref{Arguments}). However, if the command you want to repeat
729 prompts for input, or uses a numeric argument in another way, that
730 method won't work.
731
732 @kindex C-x z
733 @findex repeat
734 The command @kbd{C-x z} (@code{repeat}) provides another way to repeat
735 an Emacs command many times. This command repeats the previous Emacs
736 command, whatever that was. Repeating a command uses the same arguments
737 that were used before; it does not read new arguments each time.
738
739 To repeat the command more than once, type additional @kbd{z}'s: each
740 @kbd{z} repeats the command one more time. Repetition ends when you
741 type a character other than @kbd{z}, or press a mouse button.
742
743 For example, suppose you type @kbd{C-u 2 0 C-d} to delete 20
744 characters. You can repeat that command (including its argument) three
745 additional times, to delete a total of 80 characters, by typing @kbd{C-x
746 z z z}. The first @kbd{C-x z} repeats the command once, and each
747 subsequent @kbd{z} repeats it once again.