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