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