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