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