(Diff Mode): Minor cleanup.
[bpt/emacs.git] / man / basic.texi
CommitLineData
6bf7aab6 1@c This is part of the Emacs manual.
b65d8176 2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
8d99e09d 3@c 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6bf7aab6
DL
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 We now give the basics of how to enter text, make corrections, and
11save the text in a file. If this material is new to you, you might
12learn it more easily by running the Emacs learn-by-doing tutorial. To
13use the tutorial, run Emacs and type @kbd{Control-h t}
14(@code{help-with-tutorial}).
15
16 To clear the screen and redisplay, type @kbd{C-l} (@code{recenter}).
17
18@menu
19
20* Inserting Text:: Inserting text by simply typing it.
21* Moving Point:: How to move the cursor to the place where you want to
22 change something.
23* Erasing:: Deleting and killing text.
dc9bfb46 24* Basic Undo:: Undoing recent changes in the text.
6bf7aab6
DL
25* Files: Basic Files. Visiting, creating, and saving files.
26* Help: Basic Help. Asking what a character does.
27* Blank Lines:: Commands to make or delete blank lines.
28* Continuation Lines:: Lines too wide for the screen.
29* Position Info:: What page, line, row, or column is point on?
30* Arguments:: Numeric arguments for repeating a command.
31* Repeating:: A short-cut for repeating the previous command.
32@end menu
33
34@node Inserting Text
35@section Inserting Text
36
37@cindex insertion
38@cindex graphic characters
39 To insert printing characters into the text you are editing, just type
40them. This inserts the characters you type into the buffer at the
41cursor (that is, at @dfn{point}; @pxref{Point}). The cursor moves
42forward, and any text after the cursor moves forward too. If the text
43in the buffer is @samp{FOOBAR}, with the cursor before the @samp{B},
44then if you type @kbd{XX}, you get @samp{FOOXXBAR}, with the cursor
45still before the @samp{B}.
46
06a97e7d
RS
47 To @dfn{delete} text you have just inserted, use the large key
48labeled @key{DEL}, @key{BACKSPACE} or @key{DELETE} which is a short
49distance above the @key{RET} or @key{ENTER} key. This is the key you
9ab48fa6 50normally use, outside Emacs, for erasing the last character that you
bf1a7e14
RS
51typed. Regardless of the label on that key, Emacs thinks of it as
52@key{DEL}, and that's what we call it in this manual.
6bf7aab6 53
06a97e7d
RS
54 The @key{DEL} key deletes the character @emph{before} the cursor.
55As a consequence, the cursor and all the characters after it move
56backwards. If you type a printing character and then type @key{DEL},
57they cancel out.
58
9ab48fa6
RS
59 On most computers, Emacs recognizes automatically which key ought to
60be @key{DEL}, and sets it up that way. But in some cases, especially
61with text-only terminals, you will need to tell Emacs which key to use
62for that purpose. If the large key not far above the @key{RET} or
63@key{ENTER} key doesn't delete backwards, you need to do this.
82f6ab38 64@xref{DEL Does Not Delete}, for an explanation of how.
9ab48fa6 65
852ae42a 66 Most PC keyboards have both a @key{BACKSPACE} key not far above
83b344c5
RS
67@key{RET} or @key{ENTER}, and a @key{DELETE} key elsewhere. On these
68keyboards, Emacs supports when possible the usual convention that the
69@key{BACKSPACE} key deletes backwards (it is @key{DEL}), while the
70@key{DELETE} key deletes ``forwards,'' deleting the character after
71point, the one underneath the cursor, like @kbd{C-d} (see below).
06a97e7d 72
6bf7aab6
DL
73@kindex RET
74@cindex newline
75 To end a line and start typing a new one, type @key{RET}. This
76inserts a newline character in the buffer. If point is in the middle of
1b53c26e 77a line, the effect is to split the line. Typing @key{DEL} when the cursor is
6bf7aab6
DL
78at the beginning of a line deletes the preceding newline, thus joining
79the line with the preceding line.
80
81 Emacs can split lines automatically when they become too long, if you
82turn on a special minor mode called @dfn{Auto Fill} mode.
a102b252
CY
83@xref{Filling}, for how to use Auto Fill mode and other modes for
84@dfn{filling} text.
6bf7aab6
DL
85
86 If you prefer to have text characters replace (overwrite) existing
87text rather than shove it to the right, you can enable Overwrite mode,
88a minor mode. @xref{Minor Modes}.
89
90@cindex quoting
91@kindex C-q
92@findex quoted-insert
93 Direct insertion works for printing characters and @key{SPC}, but other
94characters act as editing commands and do not insert themselves. If you
95need to insert a control character or a character whose code is above 200
96octal, you must @dfn{quote} it by typing the character @kbd{Control-q}
97(@code{quoted-insert}) first. (This character's name is normally written
98@kbd{C-q} for short.) There are two ways to use @kbd{C-q}:@refill
99
100@itemize @bullet
101@item
102@kbd{C-q} followed by any non-graphic character (even @kbd{C-g})
103inserts that character.
104
105@item
106@kbd{C-q} followed by a sequence of octal digits inserts the character
107with the specified octal character code. You can use any number of
9acb8eec
RS
108octal digits; any non-digit terminates the sequence. If the
109terminating character is @key{RET}, it serves only to terminate the
110sequence. Any other non-digit terminates the sequence and then acts
111as normal input---thus, @kbd{C-q 1 0 1 B} inserts @samp{AB}.
112
113The use of octal sequences is disabled in ordinary non-binary
114Overwrite mode, to give you a convenient way to insert a digit instead
115of overwriting with it.
6bf7aab6
DL
116@end itemize
117
b5d1e464 118@cindex 8-bit character codes
6bf7aab6 119@noindent
d3e94981 120When multibyte characters are enabled, if you specify a code in the
093b0ab5
RS
121range 0200 through 0377 octal, @kbd{C-q} assumes that you intend to
122use some ISO 8859-@var{n} character set, and converts the specified
123code to the corresponding Emacs character code. @xref{Enabling
124Multibyte}. You select @emph{which} of the ISO 8859 character sets to
125use through your choice of language environment (@pxref{Language
126Environments}).
6bf7aab6
DL
127
128@vindex read-quoted-char-radix
129To use decimal or hexadecimal instead of octal, set the variable
130@code{read-quoted-char-radix} to 10 or 16. If the radix is greater than
13110, some letters starting with @kbd{a} serve as part of a character
132code, just like digits.
133
134A numeric argument to @kbd{C-q} specifies how many copies of the
135quoted character should be inserted (@pxref{Arguments}).
136
137@findex newline
138@findex self-insert
139 Customization information: @key{DEL} in most modes runs the command
140@code{delete-backward-char}; @key{RET} runs the command @code{newline}, and
141self-inserting printing characters run the command @code{self-insert},
142which inserts whatever character was typed to invoke it. Some major modes
143rebind @key{DEL} to other commands.
144
145@node Moving Point
146@section Changing the Location of Point
147
148@cindex arrow keys
6bf7aab6
DL
149@cindex moving point
150@cindex movement
151@cindex cursor motion
152@cindex moving the cursor
153 To do more than insert characters, you have to know how to move point
154(@pxref{Point}). The simplest way to do this is with arrow keys, or by
155clicking the left mouse button where you want to move to.
156
157 There are also control and meta characters for cursor motion. Some
b96ade76
RS
158are equivalent to the arrow keys (it is faster to use these control
159keys than move your hand over to the arrow keys). Others do more
160sophisticated things.
6bf7aab6
DL
161
162@kindex C-a
163@kindex C-e
164@kindex C-f
165@kindex C-b
166@kindex C-n
167@kindex C-p
168@kindex M->
169@kindex M-<
170@kindex M-r
06a97e7d
RS
171@kindex LEFT
172@kindex RIGHT
173@kindex UP
174@kindex DOWN
c7bda15b 175@findex move-beginning-of-line
aa3dd3b5 176@findex move-end-of-line
6bf7aab6
DL
177@findex forward-char
178@findex backward-char
179@findex next-line
180@findex previous-line
181@findex beginning-of-buffer
182@findex end-of-buffer
183@findex goto-char
184@findex goto-line
185@findex move-to-window-line
186@table @kbd
187@item C-a
c7bda15b 188Move to the beginning of the line (@code{move-beginning-of-line}).
6bf7aab6 189@item C-e
aa3dd3b5 190Move to the end of the line (@code{move-end-of-line}).
6bf7aab6 191@item C-f
06a97e7d
RS
192Move forward one character (@code{forward-char}). The right-arrow key
193does the same thing.
6bf7aab6 194@item C-b
06a97e7d
RS
195Move backward one character (@code{backward-char}). The left-arrow
196key has the same effect.
6bf7aab6
DL
197@item M-f
198Move forward one word (@code{forward-word}).
199@item M-b
200Move backward one word (@code{backward-word}).
201@item C-n
202Move down one line, vertically (@code{next-line}). This command
203attempts to keep the horizontal position unchanged, so if you start in
06a97e7d
RS
204the middle of one line, you end in the middle of the next. The
205down-arrow key does the same thing.
6bf7aab6 206@item C-p
06a97e7d 207Move up one line, vertically (@code{previous-line}). The up-arrow key
21c983fc 208has the same effect.
6bf7aab6
DL
209@item M-r
210Move point to left margin, vertically centered in the window
211(@code{move-to-window-line}). Text does not move on the screen.
212
213A numeric argument says which screen line to place point on. It counts
214screen lines down from the top of the window (zero for the top line). A
215negative argument counts lines from the bottom (@minus{}1 for the bottom
216line).
217@item M-<
218Move to the top of the buffer (@code{beginning-of-buffer}). With
219numeric argument @var{n}, move to @var{n}/10 of the way from the top.
220@xref{Arguments}, for more information on numeric arguments.@refill
221@item M->
222Move to the end of the buffer (@code{end-of-buffer}).
06a97e7d 223@item C-v
1b53c26e
RS
224@itemx @key{PAGEDOWN}
225@itemx @key{PRIOR}
226Scroll the display one screen forward, and move point if necessary to
227put it on the screen (@code{scroll-up}). This doesn't always move
228point, but it is commonly used to do so. If your keyboard has a
229@key{PAGEDOWN} or @key{PRIOR} key, it does the same thing.
06a97e7d
RS
230
231Scrolling commands are further described in @ref{Scrolling}.
232@item M-v
1b53c26e
RS
233@itemx @key{PAGEUP}
234@itemx @key{NEXT}
06a97e7d
RS
235Scroll one screen backward, and move point if necessary to put it on
236the screen (@code{scroll-down}). This doesn't always move point, but
1b53c26e
RS
237it is commonly used to do so. If your keyboard has a @key{PAGEUP} or
238@key{NEXT} key, it does the same thing.
6bf7aab6
DL
239@item M-x goto-char
240Read a number @var{n} and move point to buffer position @var{n}.
241Position 1 is the beginning of the buffer.
33e54c87 242@item M-g M-g
706f4350 243@itemx M-g g
33e54c87 244@itemx M-x goto-line
48c13f3e
LT
245Read a number @var{n} and move point to the beginning of line number
246@var{n}. Line 1 is the beginning of the buffer. If point is on or
247just after a number, then that is the default for @var{n}, if you just
248press @key{RET} with an empty minibuffer.
6bf7aab6
DL
249@item C-x C-n
250@findex set-goal-column
251@kindex C-x C-n
252Use the current column of point as the @dfn{semipermanent goal column} for
253@kbd{C-n} and @kbd{C-p} (@code{set-goal-column}). Henceforth, those
254commands always move to this column in each line moved into, or as
255close as possible given the contents of the line. This goal column remains
256in effect until canceled.
257@item C-u C-x C-n
258Cancel the goal column. Henceforth, @kbd{C-n} and @kbd{C-p} once
259again try to stick to a fixed horizontal position, as usual.
260@end table
261
262@vindex track-eol
263 If you set the variable @code{track-eol} to a non-@code{nil} value,
015a26d7 264then @kbd{C-n} and @kbd{C-p}, when starting at the end of the line, move
6bf7aab6
DL
265to the end of another line. Normally, @code{track-eol} is @code{nil}.
266@xref{Variables}, for how to set variables such as @code{track-eol}.
267
268@vindex next-line-add-newlines
c7bda15b 269 @kbd{C-n} normally stops at the end of the buffer when you use it on
1b53c26e
RS
270the last line of the buffer. But if you set the variable
271@code{next-line-add-newlines} to a non-@code{nil} value, @kbd{C-n} on
272the last line of a buffer creates an additional line at the end and
273moves down onto it.
6bf7aab6 274
177c0ea7 275@node Erasing
6bf7aab6
DL
276@section Erasing Text
277
278@table @kbd
279@item @key{DEL}
280Delete the character before point (@code{delete-backward-char}).
281@item C-d
282Delete the character after point (@code{delete-char}).
06a97e7d
RS
283@item @key{DELETE}
284@itemx @key{BACKSPACE}
285One of these keys, whichever is the large key above the @key{RET} or
b96ade76
RS
286@key{ENTER} key, deletes the character before point---it is @key{DEL}.
287If @key{BACKSPACE} is @key{DEL}, and your keyboard also has @key{DELETE},
06a97e7d 288then @key{DELETE} deletes forwards, like @kbd{C-d}.
6bf7aab6
DL
289@item C-k
290Kill to the end of the line (@code{kill-line}).
291@item M-d
292Kill forward to the end of the next word (@code{kill-word}).
293@item M-@key{DEL}
294Kill back to the beginning of the previous word
295(@code{backward-kill-word}).
296@end table
297
298@cindex killing characters and lines
299@cindex deleting characters and lines
300@cindex erasing characters and lines
301 You already know about the @key{DEL} key which deletes the character
302before point (that is, before the cursor). Another key, @kbd{Control-d}
303(@kbd{C-d} for short), deletes the character after point (that is, the
304character that the cursor is on). This shifts the rest of the text on
305the line to the left. If you type @kbd{C-d} at the end of a line, it
306joins together that line and the next line.
307
308 To erase a larger amount of text, use the @kbd{C-k} key, which kills a
309line at a time. If you type @kbd{C-k} at the beginning or middle of a
310line, it kills all the text up to the end of the line. If you type
311@kbd{C-k} at the end of a line, it joins that line and the next line.
312
313 @xref{Killing}, for more flexible ways of killing text.
314
dc9bfb46 315@node Basic Undo
6bf7aab6 316@section Undoing Changes
6bf7aab6 317
dc9bfb46
RS
318 Emacs records a list of changes made in the buffer text, so you can
319you can undo all the recent changes, as far as the records go.
320Usually each editing command makes a separate entry in the undo
321records, but sometimes an entry covers just part of a command, and
322very simple commands may be grouped.
6bf7aab6
DL
323
324@table @kbd
325@item C-x u
dc9bfb46
RS
326Undo one entry of the undo records---usually, one command worth
327(@code{undo}).
6bf7aab6 328@item C-_
1b53c26e 329@itemx C-/
6bf7aab6 330The same.
6bf7aab6
DL
331@end table
332
1b53c26e
RS
333 The command @kbd{C-x u} (or @kbd{C-_} or @kbd{C-/}) is how you undo.
334The first time you give this command, it undoes the last change.
335Point moves back to where it was before the command that made the
336change.
6bf7aab6 337
dc9bfb46
RS
338 Consecutive repetitions of @kbd{C-x u} (or its aliases) undo earlier
339and earlier changes, back to the limit of the undo information
340available. If all recorded changes have already been undone, the undo
341command displays an error message and does nothing.
6bf7aab6 342
b96ade76
RS
343 The undo command applies only to changes in the buffer; you can't
344use it to undo mere cursor motion. However, some cursor motion
345commands set the mark, so if you use these commands from time to time,
346you can move back to the neighborhoods you have moved through by
347popping the mark ring (@pxref{Mark Ring}).
6bf7aab6 348
6bf7aab6
DL
349@node Basic Files
350@section Files
351
352 The commands described above are sufficient for creating and altering
353text in an Emacs buffer; the more advanced Emacs commands just make
b96ade76 354things easier. However, to keep any text permanently you must put it in a
6bf7aab6
DL
355@dfn{file}. Files are named units of text which are stored by the
356operating system for you to retrieve later by name. To look at or use
357the contents of a file in any way, including editing the file with
358Emacs, you must specify the file name.
359
b96ade76
RS
360 Consider a file named @file{test.emacs}. (We can assume it is in
361your home directory.) In Emacs, to begin editing this file, type
6bf7aab6
DL
362
363@example
b96ade76 364C-x C-f test.emacs @key{RET}
6bf7aab6
DL
365@end example
366
367@noindent
368Here the file name is given as an @dfn{argument} to the command @kbd{C-x
369C-f} (@code{find-file}). That command uses the @dfn{minibuffer} to
370read the argument, and you type @key{RET} to terminate the argument
371(@pxref{Minibuffer}).@refill
372
373 Emacs obeys the command by @dfn{visiting} the file: creating a buffer,
374copying the contents of the file into the buffer, and then displaying
375the buffer for you to edit. If you alter the text, you can @dfn{save}
376the new text in the file by typing @kbd{C-x C-s} (@code{save-buffer}).
377This makes the changes permanent by copying the altered buffer contents
b96ade76
RS
378back into the file @file{test.emacs}. Until you save, the changes
379exist only inside Emacs, and the file @file{test.emacs} is unaltered.
6bf7aab6
DL
380
381 To create a file, just visit the file with @kbd{C-x C-f} as if it
382already existed. This creates an empty buffer in which you can insert
383the text you want to put in the file. The file is actually created when
384you save this buffer with @kbd{C-x C-s}.
385
386 Of course, there is a lot more to learn about using files. @xref{Files}.
387
388@node Basic Help
389@section Help
390
391@cindex getting help with keys
392 If you forget what a key does, you can find out with the Help
393character, which is @kbd{C-h} (or @key{F1}, which is an alias for
394@kbd{C-h}). Type @kbd{C-h k} followed by the key you want to know
395about; for example, @kbd{C-h k C-n} tells you all about what @kbd{C-n}
396does. @kbd{C-h} is a prefix key; @kbd{C-h k} is just one of its
397subcommands (the command @code{describe-key}). The other subcommands of
398@kbd{C-h} provide different kinds of help. Type @kbd{C-h} twice to get
399a description of all the help facilities. @xref{Help}.@refill
400
401@node Blank Lines
402@section Blank Lines
403
404@cindex inserting blank lines
405@cindex deleting blank lines
406 Here are special commands and techniques for putting in and taking out
407blank lines.
408
6bf7aab6
DL
409@table @kbd
410@item C-o
411Insert one or more blank lines after the cursor (@code{open-line}).
412@item C-x C-o
413Delete all but one of many consecutive blank lines
414(@code{delete-blank-lines}).
415@end table
416
417@kindex C-o
418@kindex C-x C-o
419@cindex blank lines
420@findex open-line
421@findex delete-blank-lines
422 When you want to insert a new line of text before an existing line, you
423can do it by typing the new line of text, followed by @key{RET}.
424However, it may be easier to see what you are doing if you first make a
425blank line and then insert the desired text into it. This is easy to do
426using the key @kbd{C-o} (@code{open-line}), which inserts a newline
427after point but leaves point in front of the newline. After @kbd{C-o},
428type the text for the new line. @kbd{C-o F O O} has the same effect as
429@w{@kbd{F O O @key{RET}}}, except for the final location of point.
430
431 You can make several blank lines by typing @kbd{C-o} several times, or
432by giving it a numeric argument to tell it how many blank lines to make.
c7bda15b 433@xref{Arguments}, for how. If you have a fill prefix, the @kbd{C-o}
6bf7aab6
DL
434command inserts the fill prefix on the new line, when you use it at the
435beginning of a line. @xref{Fill Prefix}.
436
437 The easy way to get rid of extra blank lines is with the command
438@kbd{C-x C-o} (@code{delete-blank-lines}). @kbd{C-x C-o} in a run of
439several blank lines deletes all but one of them. @kbd{C-x C-o} on a
440solitary blank line deletes that blank line. When point is on a
441nonblank line, @kbd{C-x C-o} deletes any blank lines following that
442nonblank line.
443
444@node Continuation Lines
445@section Continuation Lines
446
447@cindex continuation line
448@cindex wrapping
449@cindex line wrapping
e56823d9 450@cindex fringes, and continuation lines
6bf7aab6 451 If you add too many characters to one line without breaking it with
093b0ab5
RS
452@key{RET}, the line grows to occupy two (or more) lines on the screen.
453On graphical displays, Emacs indicates line wrapping with small bent
454arrows in the fringes to the left and right of the window. On
455text-only terminals, Emacs displays a @samp{\} character at the right
456margin of a screen line if it is not the last in its text line. This
457@samp{\} character says that the following screen line is not really a
458distinct line in the text, just a @dfn{continuation} of a line too
459long to fit the screen. Continuation is also called @dfn{line
460wrapping}.
461
462 When line wrapping occurs before a character that is wider than one
463column, some columns at the end of the previous screen line may be
464``empty.'' In this case, Emacs displays additional @samp{\}
465characters in the ``empty'' columns, just before the @samp{\}
466character that indicates continuation.
6bf7aab6 467
a102b252
CY
468 Continued lines can be rather difficult to read, since each line is
469typically broken in the middle of a word. You can have Emacs insert a
470newline automatically when a line gets too long, by using Auto Fill
471mode. Another approach, intermediate between continued lines and Auto
472Fill mode, is Long Lines mode, which ensures that wrapping only occurs
473in the spaces between words. @xref{Filling}.
6bf7aab6 474
6bf7aab6 475@cindex truncation
e56823d9 476@cindex line truncation, and fringes
a102b252
CY
477 Emacs can also display long lines by @dfn{truncation}. This means
478that all the characters that do not fit in the width of the screen or
479window do not appear at all. @samp{$} in the last column or a small
480straight arrow in the fringe to the right of the window indicates a
481truncated line.
ab527690
RS
482
483 @xref{Display Custom}, for more information about line truncation,
484and other variables that affect how text is displayed.
6bf7aab6
DL
485
486@node Position Info
487@section Cursor Position Information
488
489 Here are commands to get information about the size and position of
490parts of the buffer, and to count lines.
491
492@table @kbd
493@item M-x what-page
093b0ab5 494Display the page number of point, and the line number within the page.
6bf7aab6 495@item M-x what-line
093b0ab5 496Display the line number of point in the buffer.
6bf7aab6 497@item M-x line-number-mode
67675c0f
DL
498@itemx M-x column-number-mode
499Toggle automatic display of current line number or column number.
500@xref{Optional Mode Line}.
6bf7aab6 501@item M-=
093b0ab5 502Display the number of lines in the current region (@code{count-lines-region}).
6bf7aab6
DL
503@xref{Mark}, for information about the region.
504@item C-x =
093b0ab5 505Display the character code of character after point, character position of
6bf7aab6 506point, and column of point (@code{what-cursor-position}).
67675c0f 507@item M-x hl-line-mode
83440f52
EZ
508Enable or disable highlighting of the current line. @xref{Cursor
509Display}.
ffa11cf3
LK
510@item M-x size-indication-mode
511Toggle automatic display of the size of the buffer.
512@xref{Optional Mode Line}.
6bf7aab6
DL
513@end table
514
515@findex what-page
516@findex what-line
517@cindex line number commands
518@cindex location of point
519@cindex cursor location
520@cindex point location
706f4350
LT
521 @kbd{M-x what-line} computes the current line number and displays it
522in the echo area. You can also see the current line number in the
523mode line; see @ref{Mode Line}. If you narrow the buffer, then the
524line number in the mode line is relative to the accessible portion
525(@pxref{Narrowing}). By contrast, @code{what-line} shows both the
526line number relative to the narrowed region and the line number
527relative to the whole buffer.
6bf7aab6 528
9acb8eec 529 @kbd{M-x what-page} counts pages from the beginning of the file, and
1ba2ce68
RS
530counts lines within the page, showing both numbers in the echo area.
531@xref{Pages}.
6bf7aab6
DL
532
533@kindex M-=
534@findex count-lines-region
535 While on this subject, we might as well mention @kbd{M-=} (@code{count-lines-region}),
1ba2ce68 536which displays the number of lines in the region (@pxref{Mark}).
6bf7aab6
DL
537@xref{Pages}, for the command @kbd{C-x l} which counts the lines in the
538current page.
539
540@kindex C-x =
541@findex what-cursor-position
6cf1bebc
RS
542 The command @kbd{C-x =} (@code{what-cursor-position}) shows what
543column the cursor is in, and other miscellaneous information about
544point and the character after it. It displays a line in the echo area
545that looks like this:
6bf7aab6
DL
546
547@smallexample
fe7c712e 548Char: c (99, #o143, #x63) point=28062 of 36168 (78%) column=53
6bf7aab6
DL
549@end smallexample
550
6bf7aab6
DL
551 The four values after @samp{Char:} describe the character that follows
552point, first by showing it and then by giving its character code in
fe7c712e 553decimal, octal and hex. For a non-@acronym{ASCII} multibyte character, these are
339ef8ce 554followed by @samp{file} and the character's representation, in hex, in
6bf7aab6
DL
555the buffer's coding system, if that coding system encodes the character
556safely and with a single byte (@pxref{Coding Systems}). If the
339ef8ce
KH
557character's encoding is longer than one byte, Emacs shows @samp{file ...}.
558
559 However, if the character displayed is in the range 0200 through
170e42a1
KH
5600377 octal, it may actually stand for an invalid UTF-8 byte read from
561a file. In Emacs, that byte is represented as a sequence of 8-bit
562characters, but all of them together display as the original invalid
563byte, in octal code. In this case, @kbd{C-x =} shows @samp{part of
564display ...} instead of @samp{file}.
6bf7aab6
DL
565
566 @samp{point=} is followed by the position of point expressed as a character
567count. The front of the buffer counts as position 1, one character later
568as 2, and so on. The next, larger, number is the total number of characters
569in the buffer. Afterward in parentheses comes the position expressed as a
570percentage of the total size.
571
fe7c712e 572 @samp{column=} is followed by the horizontal position of point, in
6bf7aab6
DL
573columns from the left edge of the window.
574
575 If the buffer has been narrowed, making some of the text at the
1ba2ce68 576beginning and the end temporarily inaccessible, @kbd{C-x =} displays
6bf7aab6
DL
577additional text describing the currently accessible range. For example, it
578might display this:
579
580@smallexample
fe7c712e 581Char: C (67, #o103, #x43) point=252 of 889 (28%) <231-599> column=0
6bf7aab6
DL
582@end smallexample
583
584@noindent
585where the two extra numbers give the smallest and largest character
586position that point is allowed to assume. The characters between those
587two positions are the accessible ones. @xref{Narrowing}.
588
589 If point is at the end of the buffer (or the end of the accessible
590part), the @w{@kbd{C-x =}} output does not describe a character after
591point. The output might look like this:
592
593@smallexample
fe7c712e 594point=36169 of 36168 (EOB) column=0
6bf7aab6
DL
595@end smallexample
596
01005464 597@cindex character set of character at point
7923e3c2 598@cindex font of character at point
01005464 599@cindex text properties at point
c7bda15b 600 @w{@kbd{C-u C-x =}} displays the following additional information about a
27a132c3
KH
601character.
602
603@itemize @bullet
604@item
42a99593 605The character set name, and the codes that identify the character
27a132c3
KH
606within that character set; @acronym{ASCII} characters are identified
607as belonging to the @code{ascii} character set.
608
609@item
610The character's syntax and categories.
611
612@item
42a99593
RS
613The character's encodings, both internally in the buffer, and externally
614if you were to save the file.
27a132c3
KH
615
616@item
42a99593
RS
617What to type to input the character in the current input method
618(if it supports the character).
27a132c3
KH
619
620@item
bbf0fec6
RS
621If you are running Emacs on a graphical display, the font name and
622glyph code for the character. If you are running Emacs on a text-only
623terminal, the code(s) sent to the terminal.
27a132c3
KH
624
625@item
626The character's text properties (@pxref{Text Properties,,,
6cf1bebc
RS
627elisp, the Emacs Lisp Reference Manual}), and any overlays containing it
628(@pxref{Overlays,,, elisp, the same manual}).
27a132c3
KH
629@end itemize
630
6480c8b4 631 Here's an example showing the Latin-1 character A with grave accent,
27a132c3 632in a buffer whose coding system is @code{iso-latin-1}, whose
6480c8b4 633terminal coding system is @code{iso-latin-1} (so the terminal actually
01005464
EZ
634displays the character as @samp{@`A}), and which has font-lock-mode
635(@pxref{Font Lock}) enabled:
6bf7aab6 636
9acb8eec 637@smallexample
fe7c712e 638 character: @`A (2240, #o4300, #x8c0, U+00C0)
3f3015e4 639 charset: latin-iso8859-1
27a132c3 640 (Right-Hand Part of Latin Alphabet 1@dots{}
3f3015e4 641 code point: #x40
27a132c3
KH
642 syntax: w which means: word
643 category: l:Latin
3f3015e4 644 to input: type "`A" with latin-1-prefix
fe7c712e 645buffer code: #x81 #xC0
3f3015e4 646 file code: #xC0 (encoded by coding system iso-latin-1)
fe7c712e 647 display: terminal code #xC0
27a132c3
KH
648
649There are text properties here:
650 fontified t
9acb8eec 651@end smallexample
6bf7aab6
DL
652
653@node Arguments
654@section Numeric Arguments
655@cindex numeric arguments
656@cindex prefix arguments
4946337d 657@cindex arguments to commands
6bf7aab6
DL
658
659 In mathematics and computer usage, the word @dfn{argument} means
660``data provided to a function or operation.'' You can give any Emacs
661command a @dfn{numeric argument} (also called a @dfn{prefix argument}).
662Some commands interpret the argument as a repetition count. For
663example, @kbd{C-f} with an argument of ten moves forward ten characters
664instead of one. With these commands, no argument is equivalent to an
665argument of one. Negative arguments tell most such commands to move or
666act in the opposite direction.
667
668@kindex M-1
669@kindex M-@t{-}
670@findex digit-argument
671@findex negative-argument
1b53c26e
RS
672 If your terminal keyboard has a @key{META} key (labeled @key{ALT} on
673PC keyboards), the easiest way to specify a numeric argument is to
674type digits and/or a minus sign while holding down the @key{META} key.
675For example,
a1f6ea55 676
6bf7aab6
DL
677@example
678M-5 C-n
679@end example
a1f6ea55 680
6bf7aab6
DL
681@noindent
682would move down five lines. The characters @kbd{Meta-1}, @kbd{Meta-2},
683and so on, as well as @kbd{Meta--}, do this because they are keys bound
684to commands (@code{digit-argument} and @code{negative-argument}) that
a1f6ea55
EZ
685are defined to contribute to an argument for the next command.
686@kbd{Meta--} without digits normally means @minus{}1. Digits and
687@kbd{-} modified with Control, or Control and Meta, also specify numeric
688arguments.
6bf7aab6
DL
689
690@kindex C-u
691@findex universal-argument
692 Another way of specifying an argument is to use the @kbd{C-u}
693(@code{universal-argument}) command followed by the digits of the
694argument. With @kbd{C-u}, you can type the argument digits without
695holding down modifier keys; @kbd{C-u} works on all terminals. To type a
696negative argument, type a minus sign after @kbd{C-u}. Just a minus sign
697without digits normally means @minus{}1.
698
b96ade76
RS
699 @kbd{C-u} without digits or minus sign has the special meaning of
700``four times'': it multiplies the argument for the next command by
701four. @kbd{C-u C-u} multiplies it by sixteen. Thus, @kbd{C-u C-u
702C-f} moves forward sixteen characters. This is a good way to move
703forward ``fast,'' since it moves about 1/5 of a line in the usual size
704screen. Other useful combinations are @kbd{C-u C-n}, @kbd{C-u C-u
705C-n} (move down a good fraction of a screen), @kbd{C-u C-u C-o} (make
706``a lot'' of blank lines), and @kbd{C-u C-k} (kill four lines).@refill
6bf7aab6
DL
707
708 Some commands care only about whether there is an argument, and not about
709its value. For example, the command @kbd{M-q} (@code{fill-paragraph}) with
710no argument fills text; with an argument, it justifies the text as well.
711(@xref{Filling}, for more information on @kbd{M-q}.) Plain @kbd{C-u} is a
712handy way of providing an argument for such commands.
713
714 Some commands use the value of the argument as a repeat count, but do
715something peculiar when there is no argument. For example, the command
716@kbd{C-k} (@code{kill-line}) with argument @var{n} kills @var{n} lines,
717including their terminating newlines. But @kbd{C-k} with no argument is
718special: it kills the text up to the next newline, or, if point is right at
719the end of the line, it kills the newline itself. Thus, two @kbd{C-k}
720commands with no arguments can kill a nonblank line, just like @kbd{C-k}
721with an argument of one. (@xref{Killing}, for more information on
722@kbd{C-k}.)@refill
723
724 A few commands treat a plain @kbd{C-u} differently from an ordinary
725argument. A few others may treat an argument of just a minus sign
726differently from an argument of @minus{}1. These unusual cases are
1b53c26e
RS
727described when they come up; they are always for reasons of
728convenience of use of the individual command, and they are documented
729in the command's documentation string.
6bf7aab6
DL
730
731 You can use a numeric argument to insert multiple copies of a
732character. This is straightforward unless the character is a digit; for
733example, @kbd{C-u 6 4 a} inserts 64 copies of the character @samp{a}.
734But this does not work for inserting digits; @kbd{C-u 6 4 1} specifies
735an argument of 641, rather than inserting anything. To separate the
736digit to insert from the argument, type another @kbd{C-u}; for example,
737@kbd{C-u 6 4 C-u 1} does insert 64 copies of the character @samp{1}.
738
739 We use the term ``prefix argument'' as well as ``numeric argument'' to
740emphasize that you type the argument before the command, and to
741distinguish these arguments from minibuffer arguments that come after
742the command.
743
744@node Repeating
745@section Repeating a Command
746@cindex repeating a command
747
9b3ae7e4
RS
748 Many simple commands, such as those invoked with a single key or
749with @kbd{M-x @var{command-name} @key{RET}}, can be repeated by
750invoking them with a numeric argument that serves as a repeat count
751(@pxref{Arguments}). However, if the command you want to repeat
752prompts for some input, or uses a numeric argument in another way,
753repetition using a numeric argument might be problematical.
68b7eaa9 754
6bf7aab6
DL
755@kindex C-x z
756@findex repeat
757 The command @kbd{C-x z} (@code{repeat}) provides another way to repeat
758an Emacs command many times. This command repeats the previous Emacs
759command, whatever that was. Repeating a command uses the same arguments
760that were used before; it does not read new arguments each time.
761
762 To repeat the command more than once, type additional @kbd{z}'s: each
763@kbd{z} repeats the command one more time. Repetition ends when you
764type a character other than @kbd{z}, or press a mouse button.
765
766 For example, suppose you type @kbd{C-u 2 0 C-d} to delete 20
767characters. You can repeat that command (including its argument) three
768additional times, to delete a total of 80 characters, by typing @kbd{C-x
769z z z}. The first @kbd{C-x z} repeats the command once, and each
770subsequent @kbd{z} repeats it once again.
771
ab5796a9
MB
772@ignore
773 arch-tag: cda8952a-c439-41c1-aecf-4bc0d6482956
774@end ignore