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