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