Commit | Line | Data |
---|---|---|
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, | |
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 | |
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 | |
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}. | |
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 | |
48 | keyboard, but we refer to it as @key{RET} in this manual.) This | |
fbaddd63 PE |
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 | |
6be76608 XF |
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 | |
fbaddd63 | 54 | either disable Electric Indent mode (@pxref{Indent Convenience}) or |
6be76608 XF |
55 | type @kbd{C-j}, which inserts just a newline, without any |
56 | auto-indentation. | |
6c5f6319 CY |
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, | |
de0bde62 CY |
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}. | |
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 |
69 | key; other keys act as editing commands and do not insert themselves. | |
d7e9a7f8 | 70 | For instance, @key{DEL} runs the command @code{delete-backward-char} |
6c5f6319 CY |
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 | |
ad36c422 CY |
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}: | |
8cf51b2c GM |
78 | |
79 | @itemize @bullet | |
80 | @item | |
81 | @kbd{C-q} followed by any non-graphic character (even @kbd{C-g}) | |
6c5f6319 CY |
82 | inserts that character. For instance, @kbd{C-q @key{DEL}} inserts a |
83 | literal @samp{DEL} character. | |
8cf51b2c GM |
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 | |
de0bde62 CY |
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}. | |
8cf51b2c GM |
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 | ||
8cf51b2c | 99 | @vindex read-quoted-char-radix |
ad36c422 | 100 | @noindent |
8cf51b2c | 101 | To 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, |
103 | the letters @kbd{a} to @kbd{f} serve as part of a character code, | |
104 | just 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 |
113 | of a character, using the minibuffer. If you enter a name, the |
114 | command provides completion (@pxref{Completion}). If you enter a | |
9ea10cc3 | 115 | code-point, it should be as a hexadecimal number (the convention for |
1df7defd | 116 | Unicode), or a number with a specified radix, e.g., @code{#o23072} |
9ea10cc3 CY |
117 | (octal); @xref{Integer Basics,,, elisp, The Emacs Lisp Reference |
118 | Manual}. The command then inserts the corresponding character into | |
119 | the buffer. For example, both of the following insert the infinity | |
120 | sign (Unicode code-point @code{U+221E}): | |
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 |
128 | how 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 |
139 | point (@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 | 141 | respectively. You can also move point using the @dfn{arrow keys} |
119bf2f4 EZ |
142 | present on most keyboards: @key{RIGHT}, @key{LEFT}, |
143 | @key{DOWN}, and @key{UP}; however, many Emacs users find | |
7bc7d2aa EZ |
144 | that it is slower to use the arrow keys than the control keys, because |
145 | you need to move your hand to the area of the keyboard where those | |
146 | keys are located. | |
de0bde62 CY |
147 | |
148 | You can also click the left mouse button to move point to the | |
6c5f6319 CY |
149 | position clicked. Emacs also provides a variety of additional |
150 | keyboard 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 |
157 | Move 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 |
164 | This command (@code{right-char}) behaves like @kbd{C-f}, with one |
165 | exception: when editing right-to-left scripts such as Arabic, it | |
166 | instead moves @emph{backward} if the current paragraph is a | |
4c672a0f EZ |
167 | right-to-left paragraph. @xref{Bidirectional Editing}. If |
168 | @code{visual-order-cursor-movement} is non-@code{nil}, this command | |
169 | moves to the character that is to the right of the current screen | |
170 | position, moving to the next or previous screen line as appropriate. | |
171 | Note that this might potentially move point many buffer positions | |
172 | away, depending on the surrounding bidirectional context. | |
de0bde62 CY |
173 | |
174 | @item C-b | |
175 | @kindex C-b | |
176 | @findex backward-char | |
177 | Move backward one character (@code{backward-char}). | |
178 | ||
119bf2f4 | 179 | @item @key{LEFT} |
de0bde62 | 180 | @kindex LEFT |
db5dce9d | 181 | @findex left-char |
de0bde62 CY |
182 | This command (@code{left-char}) behaves like @kbd{C-b}, except it |
183 | moves @emph{forward} if the current paragraph is right-to-left. | |
4c672a0f EZ |
184 | @xref{Bidirectional Editing}. If @code{visual-order-cursor-movement} |
185 | is non-@code{nil}, this command moves to the character that is to the | |
186 | left of the current screen position, moving to the previous or next | |
187 | screen 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 |
194 | Move down one screen line (@code{next-line}). This command attempts |
195 | to keep the horizontal position unchanged, so if you start in the | |
196 | middle 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 |
203 | Move up one screen line (@code{previous-line}). This command |
204 | preserves 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 | 211 | Move 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 | 218 | Move 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 | 223 | Move 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 | |
230 | This command (@code{right-word}) behaves like @kbd{M-f}, except it | |
231 | moves @emph{backward} by one word if the current paragraph is | |
232 | right-to-left. @xref{Bidirectional Editing}. | |
233 | ||
8cf51b2c | 234 | @item M-b |
de0bde62 CY |
235 | @kindex M-b |
236 | @findex backward-word | |
8cf51b2c | 237 | Move 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 | 244 | This command (@code{left-word}) behaves like @kbd{M-b}, except it |
de0bde62 CY |
245 | moves @emph{forward} by one word if the current paragraph is |
246 | right-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 |
251 | Without moving the text on the screen, reposition point on the left |
252 | margin of the center-most text line of the window; on subsequent | |
253 | consecutive invocations, move point to the left margin of the top-most | |
254 | line, the bottom-most line, and so forth, in cyclic order | |
255 | (@code{move-to-window-line-top-bottom}). | |
256 | ||
8cf51b2c GM |
257 | A numeric argument says which screen line to place point on, counting |
258 | downward from the top of the window (zero means the top line). A | |
259 | negative argument counts lines up from the bottom (@minus{}1 means the | |
de0bde62 CY |
260 | bottom line). @xref{Arguments}, for more information on numeric |
261 | arguments. | |
91ed7ea8 | 262 | |
8cf51b2c | 263 | @item M-< |
de0bde62 CY |
264 | @kindex M-< |
265 | @findex beginning-of-buffer | |
8cf51b2c GM |
266 | Move to the top of the buffer (@code{beginning-of-buffer}). With |
267 | numeric 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 | 272 | Move 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 |
277 | Scroll the display one screen forward, and move point onscreen if |
278 | necessary (@code{scroll-up-command}). @xref{Scrolling}. | |
279 | ||
8cf51b2c | 280 | @item M-v |
6c5f6319 | 281 | @itemx @key{PageUp} |
e2a71e28 | 282 | @itemx @key{prior} |
550f41cd CY |
283 | Scroll 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 |
289 | Read a number @var{n} and move point to buffer position @var{n}. |
290 | Position 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 | 297 | Read 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 |
299 | point is on or just after a number in the buffer, that is the default | |
300 | for @var{n}. Just type @key{RET} in the minibuffer to use it. You can | |
301 | also 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 | |
303 | a plain prefix argument. | |
de0bde62 | 304 | |
48de8b12 CY |
305 | @item M-g @key{TAB} |
306 | @kindex M-g TAB | |
307 | @findex move-to-column | |
308 | Read a number @var{n} and move to column @var{n} in the current line. | |
309 | Column 0 is the leftmost column. If called with a prefix argument, | |
310 | move 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 |
315 | Use the current column of point as the @dfn{semipermanent goal column} |
316 | for @kbd{C-n} and @kbd{C-p} (@code{set-goal-column}). When a | |
317 | semipermanent goal column is in effect, those commands always try to | |
318 | move to this column, or as close as possible to it, after moving | |
319 | vertically. The goal column remains in effect until canceled. | |
de0bde62 | 320 | |
8cf51b2c GM |
321 | @item C-u C-x C-n |
322 | Cancel the goal column. Henceforth, @kbd{C-n} and @kbd{C-p} try to | |
323 | preserve 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 | |
328 | window, Emacs usually displays it on two or more @dfn{screen lines}. | |
329 | For convenience, @kbd{C-n} and @kbd{C-p} move point by screen lines, | |
330 | as do the equivalent keys @kbd{@key{down}} and @kbd{@key{up}}. You | |
331 | can force these commands to move according to @dfn{logical lines} | |
332 | (i.e., according to the text lines in the buffer) by setting the | |
333 | variable @code{line-move-visual} to @code{nil}; if a logical line | |
334 | occupies multiple screen lines, the cursor then skips over the | |
de0bde62 CY |
335 | additional 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 | |
340 | on 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 | |
343 | of the logical line. Whenever we encounter commands that work on | |
344 | screen lines, such as @kbd{C-n} and @kbd{C-p}, we will point these | |
345 | out. | |
346 | ||
8cf51b2c | 347 | @vindex track-eol |
6c5f6319 CY |
348 | When @code{line-move-visual} is @code{nil}, you can also set the |
349 | variable @code{track-eol} to a non-@code{nil} value. Then @kbd{C-n} | |
350 | and @kbd{C-p}, when starting at the end of the logical line, move to | |
351 | the 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 | 356 | the 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 |
358 | the last line of a buffer creates an additional line at the end and | |
359 | moves 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 |
370 | Delete the character before point, or the region if it is active |
371 | (@code{delete-backward-char}). | |
372 | ||
3812efdc | 373 | @item @key{Delete} |
de0bde62 CY |
374 | Delete the character after point, or the region if it is active |
375 | (@code{delete-forward-char}). | |
376 | ||
377 | @item C-d | |
8cf51b2c | 378 | Delete the character after point (@code{delete-char}). |
de0bde62 | 379 | |
8cf51b2c GM |
380 | @item C-k |
381 | Kill to the end of the line (@code{kill-line}). | |
382 | @item M-d | |
383 | Kill forward to the end of the next word (@code{kill-word}). | |
384 | @item M-@key{DEL} | |
385 | Kill 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 |
390 | the character before point, moving the cursor and the characters after | |
391 | it backwards. If point was at the beginning of a line, this deletes | |
392 | the 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 |
395 | the 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 |
398 | refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL} |
399 | with the @key{Delete} key; we will discuss @key{Delete} momentarily.) | |
0be641c0 | 400 | On some text terminals, Emacs may not recognize the @key{DEL} key |
de0bde62 | 401 | properly. @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 |
405 | character under the cursor. If point was at the end of a line, this |
406 | joins the following line onto this one. Like @kbd{@key{DEL}}, it | |
407 | deletes 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 | 410 | similar to @key{Delete}, but regardless of whether the region is |
de0bde62 | 411 | active. |
8cf51b2c | 412 | |
de0bde62 CY |
413 | @xref{Deletion}, for more detailed information about the above |
414 | deletion commands. | |
415 | ||
416 | @kbd{C-k} (@code{kill-line}) erases (kills) a line at a time. If | |
417 | you type @kbd{C-k} at the beginning or middle of a line, it kills all | |
418 | the text up to the end of the line. If you type @kbd{C-k} at the end | |
419 | of a line, it joins that line with the following line. | |
420 | ||
421 | @xref{Killing}, for more information about @kbd{C-k} and related | |
422 | commands. | |
8cf51b2c GM |
423 | |
424 | @node Basic Undo | |
425 | @section Undoing Changes | |
426 | ||
8cf51b2c | 427 | @table @kbd |
6c5f6319 | 428 | @item C-/ |
8cf51b2c GM |
429 | Undo 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 |
434 | The same. |
435 | @end table | |
436 | ||
6c5f6319 CY |
437 | Emacs records a list of changes made in the buffer text, so you can |
438 | undo recent changes. This is done using the @code{undo} command, | |
439 | which is bound to @kbd{C-/} (as well as @kbd{C-x u} and @kbd{C-_}). | |
440 | Normally, this command undoes the last change, moving point back to | |
441 | where it was before the change. The undo command applies only to | |
442 | changes 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 | |
445 | undo records, very simple commands may be grouped together. | |
446 | Sometimes, 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 |
449 | another, earlier change, back to the limit of the undo information |
450 | available. If all recorded changes have already been undone, the undo | |
451 | command 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 | 459 | Emacs 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 | |
463 | directory. To begin editing this file in Emacs, type | |
464 | ||
465 | @example | |
466 | C-x C-f test.emacs @key{RET} | |
467 | @end example | |
468 | ||
469 | @noindent | |
470 | Here the file name is given as an @dfn{argument} to the command @kbd{C-x | |
471 | C-f} (@code{find-file}). That command uses the @dfn{minibuffer} to | |
472 | read 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 | 476 | buffer, copies the contents of the file into the buffer, and then |
8cf51b2c GM |
477 | displays 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 | |
480 | into the file @file{test.emacs}, making them permanent. Until you | |
481 | save, 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 | |
485 | existed. This creates an empty buffer, in which you can insert the | |
486 | text you want to put in the file. Emacs actually creates the file the | |
487 | first 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 |
496 | k} (@code{describe-key}), followed by the key of interest; for | |
497 | example, @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} | |
500 | serves as an alias for @kbd{C-h}. Apart from @kbd{C-h k}, there are | |
501 | many 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 | |
511 | blank lines. | |
512 | ||
513 | @table @kbd | |
514 | @item C-o | |
6c5f6319 | 515 | Insert a blank line after the cursor (@code{open-line}). |
8cf51b2c GM |
516 | @item C-x C-o |
517 | Delete 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 |
527 | of text. However, it may be easier to see what you are doing if you | |
528 | first make a blank line and then insert the desired text into it. | |
529 | This is easy to do using the key @kbd{C-o} (@code{open-line}), which | |
530 | inserts a newline after point but leaves point in front of the | |
531 | newline. 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 | |
534 | by 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} | |
536 | command inserts the fill prefix on the new line, if typed at the | |
537 | beginning 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 |
541 | of several blank lines, @kbd{C-x C-o} deletes all but one of them. If | |
542 | point is on a single blank line, @kbd{C-x C-o} deletes it. If point | |
543 | is on a nonblank line, @kbd{C-x C-o} deletes all following blank | |
544 | lines, 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 |
554 | too 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 | |
558 | wrapping with small bent arrows in the left and right window fringes. | |
0be641c0 | 559 | On 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 | |
563 | lines. For instance, @kbd{C-k} kills a logical line. As described | |
564 | earlier, @kbd{C-n} (@code{next-line}) and @kbd{C-p} | |
565 | (@code{previous-line}) are special exceptions: they move point down | |
566 | and 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 |
571 | continuing them. This means that every logical line occupies a single | |
572 | screen line; if it is longer than the width of the window, the rest of | |
573 | the line is not displayed. On a graphical display, a truncated line | |
0be641c0 CY |
574 | is indicated by a small straight arrow in the right fringe; on a text |
575 | terminal, 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. | |
579 | Since the wrapping may occur in the middle of a word, continued lines | |
580 | can be difficult to read. The usual solution is to break your lines | |
581 | before they get too long, by inserting newlines. If you prefer, you | |
582 | can make Emacs insert a newline automatically when a line gets too | |
583 | long, by using Auto Fill mode. @xref{Filling}. | |
584 | ||
585 | @cindex word wrap | |
586 | Sometimes, you may need to edit files containing many long logical | |
587 | lines, and it may not be practical to break them all up by adding | |
588 | newlines. In that case, you can use Visual Line mode, which enables | |
589 | @dfn{word wrapping}: instead of wrapping long lines exactly at the | |
590 | right window edge, Emacs wraps them at the word boundaries (i.e., | |
591 | space or tab characters) nearest to the right window edge. Visual | |
592 | Line 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 | |
594 | logical 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 | 600 | parts of the buffer, and to count words and lines. |
8cf51b2c GM |
601 | |
602 | @table @kbd | |
8cf51b2c | 603 | @item M-x what-line |
b2b0776e | 604 | Display the line number of point. |
8cf51b2c GM |
605 | @item M-x line-number-mode |
606 | @itemx M-x column-number-mode | |
607 | Toggle automatic display of the current line number or column number. | |
608 | @xref{Optional Mode Line}. | |
de0bde62 CY |
609 | |
610 | @item M-= | |
b2b0776e CY |
611 | Display the number of lines, words, and characters that are present in |
612 | the region (@code{count-words-region}). @xref{Mark}, for information | |
613 | about the region. | |
de0bde62 | 614 | |
b2b0776e CY |
615 | @item M-x count-words |
616 | Display the number of lines, words, and characters that are present in | |
617 | the buffer. If the region is active (@pxref{Mark}), display the | |
618 | numbers for the region instead. | |
de0bde62 | 619 | |
8cf51b2c GM |
620 | @item C-x = |
621 | Display the character code of character after point, character position of | |
622 | point, and column of point (@code{what-cursor-position}). | |
623 | @item M-x hl-line-mode | |
624 | Enable or disable highlighting of the current line. @xref{Cursor | |
625 | Display}. | |
626 | @item M-x size-indication-mode | |
627 | Toggle 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 |
637 | area. This command is usually redundant, because the current line | |
638 | number is shown in the mode line (@pxref{Mode Line}). However, if you | |
867d4bb3 | 639 | narrow the buffer, the mode line shows the line number relative to |
6c5f6319 CY |
640 | the accessible portion (@pxref{Narrowing}). By contrast, |
641 | @code{what-line} displays both the line number relative to the | |
642 | narrowed 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 |
647 | the number of lines, words, and characters in the region |
648 | (@pxref{Mark}, for an explanation of the region). With a prefix | |
649 | argument, @kbd{C-u M-=}, the command displays a count for the entire | |
650 | buffer. | |
651 | ||
652 | @findex count-words | |
653 | The command @kbd{M-x count-words} does the same job, but with a | |
654 | different calling convention. It displays a count for the region if | |
655 | the 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 |
660 | information about the current cursor position and the buffer contents | |
661 | at that position. It displays a line in the echo area that looks like | |
662 | this: | |
8cf51b2c GM |
663 | |
664 | @smallexample | |
665 | Char: 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. |
669 | The text inside the parenthesis shows the corresponding decimal, octal | |
670 | and hex character codes; for more information about how @kbd{C-x =} | |
671 | displays character information, see @ref{International Chars}. After | |
672 | @samp{point=} is the position of point as a character count (the first | |
673 | character in the buffer is position 1, the second character is | |
674 | position 2, and so on). The number after that is the total number of | |
675 | characters in the buffer, and the number in parenthesis expresses the | |
676 | position as a percentage of the total. After @samp{column=} is the | |
677 | horizontal position of point, in columns counting from the left edge | |
678 | of the window. | |
8cf51b2c GM |
679 | |
680 | If the buffer has been narrowed, making some of the text at the | |
681 | beginning and the end temporarily inaccessible, @kbd{C-x =} displays | |
6c5f6319 CY |
682 | additional text describing the currently accessible range. For |
683 | example, it might display this: | |
8cf51b2c GM |
684 | |
685 | @smallexample | |
686 | Char: C (67, #o103, #x43) point=252 of 889 (28%) <231-599> column=0 | |
687 | @end smallexample | |
688 | ||
689 | @noindent | |
690 | where the two extra numbers give the smallest and largest character | |
6c5f6319 CY |
691 | position that point is allowed to assume. The characters between |
692 | those 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 | 701 | means ``data provided to a function or operation''. You can give any |
6c5f6319 CY |
702 | Emacs command a @dfn{numeric argument} (also called a @dfn{prefix |
703 | argument}). Some commands interpret the argument as a repetition | |
704 | count. For example, giving @kbd{C-f} an argument of ten causes it to | |
705 | move point forward by ten characters instead of one. With these | |
706 | commands, no argument is equivalent to an argument of one, and | |
707 | negative arguments cause them to move or act in the opposite | |
708 | direction. | |
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 |
715 | and/or a minus sign while holding down the @key{META} key. For |
716 | example, | |
8cf51b2c GM |
717 | |
718 | @example | |
719 | M-5 C-n | |
720 | @end example | |
721 | ||
722 | @noindent | |
6c5f6319 CY |
723 | moves down five lines. The keys @kbd{M-1}, @kbd{M-2}, and so on, as |
724 | well as @kbd{M--}, are bound to commands (@code{digit-argument} and | |
725 | @code{negative-argument}) that set up an argument for the next | |
d7e9a7f8 | 726 | command. @kbd{M--} without digits normally means @minus{}1. |
8cf51b2c | 727 | |
fcda6454 CY |
728 | If 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 | |
730 | down fifty lines, type | |
731 | ||
732 | @example | |
733 | M-5 0 C-n | |
734 | @end example | |
735 | ||
736 | @noindent | |
737 | Note that this @emph{does not} insert five copies of @samp{0} and move | |
738 | down one line, as you might expect---the @samp{0} is treated as part | |
739 | of the prefix argument. | |
740 | ||
741 | (What if you do want to insert five copies of @samp{0}? Type @kbd{M-5 | |
742 | C-u 0}. Here, @kbd{C-u} ``terminates'' the prefix argument, so that | |
743 | the next keystroke begins the command that you want to execute. Note | |
744 | that this meaning of @kbd{C-u} applies only to this case. For the | |
745 | usual 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 |
750 | specify a numeric argument is to type @kbd{C-u} | |
751 | (@code{universal-argument}) followed by some digits, or (for a | |
752 | negative argument) a minus sign followed by digits. A minus sign | |
753 | without digits normally means @minus{}1. | |
6c5f6319 CY |
754 | |
755 | @kbd{C-u} alone has the special meaning of ``four times'': it | |
756 | multiplies the argument for the next command by four. @kbd{C-u C-u} | |
757 | multiplies it by sixteen. Thus, @kbd{C-u C-u C-f} moves forward | |
758 | sixteen 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 | |
760 | C-u C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four | |
761 | lines). | |
762 | ||
763 | You can use a numeric argument before a self-inserting character to | |
764 | insert multiple copies of it. This is straightforward when the | |
765 | character is not a digit; for example, @kbd{C-u 6 4 a} inserts 64 | |
766 | copies of the character @samp{a}. But this does not work for | |
767 | inserting digits; @kbd{C-u 6 4 1} specifies an argument of 641. You | |
768 | can 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 | |
770 | the character @samp{1}. | |
8cf51b2c GM |
771 | |
772 | Some commands care whether there is an argument, but ignore its | |
f0a35bd4 | 773 | value. For example, the command @kbd{M-q} (@code{fill-paragraph}) |
8cf51b2c | 774 | fills 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 |
776 | commands, 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 | |
780 | do something special when there is no argument. For example, the | |
781 | command @kbd{C-k} (@code{kill-line}) with argument @var{n} kills | |
782 | @var{n} lines, including their terminating newlines. But @kbd{C-k} | |
783 | with no argument is special: it kills the text up to the next newline, | |
784 | or, if point is right at the end of the line, it kills the newline | |
785 | itself. Thus, two @kbd{C-k} commands with no arguments can kill a | |
786 | nonblank 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 | |
790 | argument. A few others may treat an argument of just a minus sign | |
791 | differently from an argument of @minus{}1. These unusual cases are | |
792 | described when they come up; they exist to make an individual command | |
793 | more convenient, and they are documented in that command's | |
794 | documentation string. | |
795 | ||
d8e213eb DM |
796 | We use the term @dfn{prefix argument} to emphasize that you type |
797 | such arguments before the command, and to distinguish them from | |
798 | minibuffer arguments (@pxref{Minibuffer}), which are entered after | |
799 | invoking 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 | |
806 | with @kbd{M-x @var{command-name} @key{RET}}, can be repeated by | |
807 | invoking them with a numeric argument that serves as a repeat count | |
808 | (@pxref{Arguments}). However, if the command you want to repeat | |
809 | prompts for input, or uses a numeric argument in another way, that | |
810 | method 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 | |
815 | an Emacs command many times. This command repeats the previous Emacs | |
816 | command, whatever that was. Repeating a command uses the same arguments | |
817 | that 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 | |
821 | type 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 | |
824 | characters. You can repeat that command (including its argument) three | |
825 | additional times, to delete a total of 80 characters, by typing @kbd{C-x | |
826 | z z z}. The first @kbd{C-x z} repeats the command once, and each | |
827 | subsequent @kbd{z} repeats it once again. |