]> code.delx.au - gnu-emacs/blob - man/kmacro.texi
** triska@gmx.at, Nov 2: EMACS environment variable.
[gnu-emacs] / man / kmacro.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
3 @c 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Keyboard Macros, Files, Fixit, Top
6 @chapter Keyboard Macros
7 @cindex defining keyboard macros
8 @cindex keyboard macro
9
10 In this chapter we describe how to record a sequence of editing
11 commands so you can repeat it conveniently later.
12
13 A @dfn{keyboard macro} is a command defined by an Emacs user to stand for
14 another sequence of keys. For example, if you discover that you are
15 about to type @kbd{C-n M-d C-d} forty times, you can speed your work by
16 defining a keyboard macro to do @kbd{C-n M-d C-d}, and then executing
17 it 39 more times.
18
19 You define a keyboard macro by executing and recording the commands
20 which are its definition. Put differently, as you define a keyboard
21 macro, the definition is being executed for the first time. This way,
22 you can see the effects of your commands, so that you don't have to
23 figure them out in your head. When you close the definition, the
24 keyboard macro is defined and also has been, in effect, executed once.
25 You can then do the whole thing over again by invoking the macro.
26
27 Keyboard macros differ from ordinary Emacs commands in that they are
28 written in the Emacs command language rather than in Lisp. This makes it
29 easier for the novice to write them, and makes them more convenient as
30 temporary hacks. However, the Emacs command language is not powerful
31 enough as a programming language to be useful for writing anything
32 intelligent or general. For such things, Lisp must be used.
33
34 @menu
35 * Basic Keyboard Macro:: Defining and running keyboard macros.
36 * Keyboard Macro Ring:: Where previous keyboard macros are saved.
37 * Keyboard Macro Counter:: Inserting incrementing numbers in macros.
38 * Keyboard Macro Query:: Making keyboard macros do different things each time.
39 * Save Keyboard Macro:: Giving keyboard macros names; saving them in files.
40 * Edit Keyboard Macro:: Editing keyboard macros.
41 * Keyboard Macro Step-Edit:: Interactively executing and editing a keyboard
42 macro.
43 @end menu
44
45 @node Basic Keyboard Macro
46 @section Basic Use
47
48 @table @kbd
49 @item C-x (
50 @itemx @key{F3}
51 Start defining a keyboard macro (@code{kmacro-start-macro}).
52 @item C-x )
53 End the definition of a keyboard macro (@code{kmacro-end-macro}).
54 @item C-x e
55 Execute the most recent keyboard macro (@code{kmacro-end-and-call-macro}).
56 First end the definition of the keyboard macro, if currently defining it.
57 To immediately execute the keyboard macro again, just repeat the @kbd{e}.
58 @item @key{F4}
59 If a keyboard macro is being defined, end the definition; otherwise,
60 execute the most recent keyboard macro
61 (@code{kmacro-end-or-call-macro}).
62 @item C-u C-x (
63 Re-execute last keyboard macro, then add more keys to its definition.
64 @item C-u C-u C-x (
65 Add more keys to the last keyboard macro without re-executing it.
66 @item C-x C-k r
67 Run the last keyboard macro on each line that begins in the region
68 (@code{apply-macro-to-region-lines}).
69 @end table
70
71 @kindex C-x (
72 @kindex C-x )
73 @kindex C-x e
74 @findex kmacro-start-macro
75 @findex kmacro-end-macro
76 @findex kmacro-end-and-call-macro
77 To start defining a keyboard macro, type the @kbd{C-x (} command
78 (@code{kmacro-start-macro}). From then on, your keys continue to be
79 executed, but also become part of the definition of the macro. @samp{Def}
80 appears in the mode line to remind you of what is going on. When you are
81 finished, the @kbd{C-x )} command (@code{kmacro-end-macro}) terminates the
82 definition (without becoming part of it!). For example,
83
84 @example
85 C-x ( M-f foo C-x )
86 @end example
87
88 @noindent
89 defines a macro to move forward a word and then insert @samp{foo}.
90
91 The macro thus defined can be invoked again with the @kbd{C-x e}
92 command (@code{kmacro-end-and-call-macro}), which may be given a
93 repeat count as a numeric argument to execute the macro many times.
94 If you enter @kbd{C-x e} while defining a macro, the macro is
95 terminated and executed immediately.
96
97 After executing the macro with @kbd{C-x e}, you can use @kbd{e}
98 repeatedly to immediately repeat the macro one or more times. For example,
99
100 @example
101 C-x ( xyz C-x e e e
102 @end example
103
104 @noindent
105 inserts @samp{xyzxyzxyzxyz} in the current buffer.
106
107 @kbd{C-x )} can also be given a repeat count as an argument, in
108 which case it repeats the macro that many times right after defining
109 it, but defining the macro counts as the first repetition (since it is
110 executed as you define it). Therefore, giving @kbd{C-x )} an argument
111 of 4 executes the macro immediately 3 additional times. An argument
112 of zero to @kbd{C-x e} or @kbd{C-x )} means repeat the macro
113 indefinitely (until it gets an error or you type @kbd{C-g} or, on
114 MS-DOS, @kbd{C-@key{BREAK}}).
115
116 The key @key{F4} is like a combination of @kbd{C-x )} and @kbd{C-x
117 e}. If you're defining a macro, @key{F4} ends the definition.
118 Otherwise it executes the last macro.
119
120 If you wish to repeat an operation at regularly spaced places in the
121 text, define a macro and include as part of the macro the commands to move
122 to the next place you want to use it. For example, if you want to change
123 each line, you should position point at the start of a line, and define a
124 macro to change that line and leave point at the start of the next line.
125 Then repeating the macro will operate on successive lines.
126
127 When a command reads an argument with the minibuffer, your
128 minibuffer input becomes part of the macro along with the command. So
129 when you replay the macro, the command gets the same argument as
130 when you entered the macro. For example,
131
132 @example
133 C-x ( C-a C-@key{SPC} C-n M-w C-x b f o o @key{RET} C-y C-x b @key{RET} C-x )
134 @end example
135
136 @noindent
137 defines a macro that copies the current line into the buffer
138 @samp{foo}, then returns to the original buffer.
139
140 You can use function keys in a keyboard macro, just like keyboard
141 keys. You can even use mouse events, but be careful about that: when
142 the macro replays the mouse event, it uses the original mouse position
143 of that event, the position that the mouse had while you were defining
144 the macro. The effect of this may be hard to predict. (Using the
145 current mouse position would be even less predictable.)
146
147 One thing that sometimes works badly in a keyboard macro is the
148 command @kbd{C-M-c} (@code{exit-recursive-edit}). When this command
149 exits a recursive edit that started within the macro, it works as
150 you'd expect. But if it exits a recursive edit that started before
151 you invoked the keyboard macro, it also necessarily exits the keyboard
152 macro as part of the process.
153
154 After you have terminated the definition of a keyboard macro, you can add
155 to the end of its definition by typing @kbd{C-u C-x (}. This is equivalent
156 to plain @kbd{C-x (} followed by retyping the whole definition so far. As
157 a consequence it re-executes the macro as previously defined.
158
159 You can also add to the end of the definition of the last keyboard
160 macro without re-executing it by typing @kbd{C-u C-u C-x (}.
161
162 The variable @code{kmacro-execute-before-append} specifies whether
163 a single @kbd{C-u} prefix causes the existing macro to be re-executed
164 before appending to it.
165
166 @findex apply-macro-to-region-lines
167 @kindex C-x C-k r
168 The command @kbd{C-x C-k r} (@code{apply-macro-to-region-lines})
169 repeats the last defined keyboard macro on each line that begins in
170 the region. It does this line by line, by moving point to the
171 beginning of the line and then executing the macro.
172
173 @node Keyboard Macro Ring
174 @section The Keyboard Macro Ring
175
176 All defined keyboard macros are recorded in the ``keyboard macro ring,''
177 a list of sequences of keys. There is only one keyboard macro ring,
178 shared by all buffers.
179
180 @table @kbd
181 @item C-x C-k C-k
182 Execute the keyboard macro at the head of the ring (@code{kmacro-end-or-call-macro-repeat}).
183 @item C-x C-k C-n
184 Rotate the keyboard macro ring to the next macro (defined earlier)
185 (@code{kmacro-cycle-ring-next}).
186 @item C-x C-k C-p
187 Rotate the keyboard macro ring to the previous macro (defined later)
188 (@code{kmacro-cycle-ring-previous}).
189 @end table
190
191 All commands which operate on the keyboard macro ring use the
192 same @kbd{C-x C-k} prefix. Most of these commands can be executed and
193 repeated immediately after each other without repeating the @kbd{C-x
194 C-k} prefix. For example,
195
196 @example
197 C-x C-k C-p C-p C-k C-k C-k C-n C-n C-k C-p C-k C-d
198 @end example
199
200 @noindent
201 will rotate the keyboard macro ring to the ``second previous'' macro,
202 execute the resulting head macro three times, rotate back to the
203 original head macro, execute that once, rotate to the ``previous''
204 macro, execute that, and finally delete it from the macro ring.
205
206 @findex kmacro-end-or-call-macro-repeat
207 @kindex C-x C-k C-k
208 The command @kbd{C-x C-k C-k} (@code{kmacro-end-or-call-macro-repeat})
209 executes the keyboard macro at the head of the macro ring. You can
210 repeat the macro immediately by typing another @kbd{C-k}, or you can
211 rotate the macro ring immediately by typing @kbd{C-n} or @kbd{C-p}.
212
213 When a keyboard macro is being defined, @kbd{C-x C-k C-k} behaves like
214 @kbd{C-x )} except that, immediately afterward, you can use most key
215 bindings of this section without the @kbd{C-x C-k} prefix. For
216 instance, another @kbd{C-k} will re-execute the macro.
217
218 @findex kmacro-cycle-ring-next
219 @kindex C-x C-k C-n
220 @findex kmacro-cycle-ring-previous
221 @kindex C-x C-k C-p
222 The commands @kbd{C-x C-k C-n} (@code{kmacro-cycle-ring-next}) and
223 @kbd{C-x C-k C-p} (@code{kmacro-cycle-ring-previous}) rotate the
224 macro ring, bringing the next or previous keyboard macro to the head
225 of the macro ring. The definition of the new head macro is displayed
226 in the echo area. You can continue to rotate the macro ring
227 immediately by repeating just @kbd{C-n} and @kbd{C-p} until the
228 desired macro is at the head of the ring. To execute the new macro
229 ring head immediately, just type @kbd{C-k}.
230
231 Note that Emacs treats the head of the macro ring as the ``last
232 defined keyboard macro.'' For instance, @kbd{C-x e} will execute that
233 macro, and @kbd{C-x C-k n} will give it a name.
234
235 @ignore @c This interface is too kludgy
236 @c and the functionality duplicates the functionality above -- rms.
237 @findex kmacro-view-macro-repeat
238 @kindex C-x C-k C-v
239 The command @kbd{C-x C-k C-v} (@code{kmacro-view-macro-repeat})
240 displays the last keyboard macro, or when repeated (with @kbd{C-v}),
241 it displays the previous macro on the macro ring, just like @kbd{C-x
242 C-k C-p}, but without actually rotating the macro ring. If you enter
243 @kbd{C-k} immediately after displaying a macro from the ring, that
244 macro is executed, but still without altering the macro ring.
245
246 So while e.g. @kbd{C-x C-k C-p C-p C-p C-k C-k} makes the 3rd previous
247 macro the current macro and executes it twice, @kbd{C-x C-k C-v C-v
248 C-v C-k C-k} will display and execute the 3rd previous macro once and
249 then the current macro once.
250 @end ignore
251
252 @ignore @c This is just too much feeping creaturism.
253 @c If you are reusing certain macros enough to want these,
254 @c you should give then names. -- rms
255 @findex kmacro-delete-ring-head
256 @kindex C-x C-k C-d
257
258 The command @kbd{C-x C-k C-d} (@code{kmacro-delete-ring-head})
259 removes and deletes the macro currently at the head of the macro
260 ring. You can use this to delete a macro that didn't work as
261 expected, or which you don't need anymore.
262
263 @findex kmacro-swap-ring
264 @kindex C-x C-k C-t
265
266 The command @kbd{C-x C-k C-t} (@code{kmacro-swap-ring})
267 interchanges the head of the macro ring with the previous element on
268 the macro ring.
269
270 @findex kmacro-call-ring-2nd-repeat
271 @kindex C-x C-k C-l
272
273 The command @kbd{C-x C-k C-l} (@code{kmacro-call-ring-2nd-repeat})
274 executes the previous (rather than the head) element on the macro ring.
275 @end ignore
276
277 @vindex kmacro-ring-max
278 The maximum number of macros stored in the keyboard macro ring is
279 determined by the customizable variable @code{kmacro-ring-max}.
280
281 @node Keyboard Macro Counter
282 @section The Keyboard Macro Counter
283
284 @table @kbd
285 @item C-x C-k C-i
286 Insert the keyboard macro counter value in the buffer
287 (@code{kmacro-insert-counter}).
288 @item C-x C-k C-c
289 Set the keyboard macro counter (@code{kmacro-set-counter}).
290 @item C-x C-k C-a
291 Add the prefix arg to the keyboard macro counter (@code{kmacro-add-counter}).
292 @item C-x C-k C-f
293 Specify the format for inserting the keyboard macro counter
294 (@code{kmacro-set-format}).
295 @end table
296
297 Each keyboard macro has an associated counter. Normally, the
298 macro counter is initialized to 0 when you start defining the macro,
299 and incremented by 1 after each insertion of the counter value;
300 that is, if you insert the macro counter twice while defining the
301 macro, the counter will increase by 2 on each repetition of the macro.
302
303 @findex kmacro-insert-counter
304 @kindex C-x C-k C-i
305 The command @kbd{C-x C-k C-i} (@code{kmacro-insert-counter}) inserts
306 the current value of the current keyboard macro's counter, and
307 increments the counter by 1. You can use a numeric prefix argument to
308 specify a different increment. If you just specify a @kbd{C-u}
309 prefix, then the increment is zero, so it repeats the last inserted
310 counter value. For example, if you enter the following sequence while
311 defining a macro
312
313 @example
314 C-x C-k C-i C-x C-k C-i C-u C-x C-k C-i C-x C-k C-i
315 @end example
316
317 @noindent
318 it inserts @samp{0112} in the buffer. The next two iterations
319 of the macro will insert @samp{3445} and @samp{6778}.
320
321 This command usually only makes sense while defining a keyboard
322 macro. But its behavior when no keyboard macro is being defined or
323 executed is predictable: it inserts and increments the counter of the
324 macro at the head of the keyboard macro ring.
325
326 @findex kmacro-set-counter
327 @kindex C-x C-k C-c
328 The command @kbd{C-x C-k C-c} (@code{kmacro-set-counter}) sets the
329 current macro counter to the value of the numeric argument. If you use
330 it inside the macro, it operates on each repetition of the macro. If
331 you specify just @kbd{C-u} as the prefix, while executing the macro,
332 that resets the counter to the value it had at the beginning of the
333 current repetition of the macro (undoing any increments so far in this
334 repetition).
335
336 @findex kmacro-add-counter
337 @kindex C-x C-k C-a
338 The command @kbd{C-x C-k C-a} (@code{kmacro-add-counter}) adds the
339 prefix argument to the current macro counter. With just @kbd{C-u} as
340 argument, it resets the counter to the last value inserted by any
341 keyboard macro. (Normally, when you use this, the last insertion
342 will be in the same macro and it will be the same counter.)
343
344 @findex kmacro-set-format
345 @kindex C-x C-k C-f
346 The command @kbd{C-x C-k C-f} (@code{kmacro-set-format}) prompts for
347 the format to use when inserting the macro counter. The default
348 format is @samp{%d}, which means to insert the number in decimal
349 without any padding. You can exit with empty minibuffer to reset the
350 format to this default. You can specify any format string that the
351 @code{format} function accepts and that makes sense with a single
352 integer extra argument (@pxref{Formatting Strings,,, elisp, The Emacs
353 Lisp Reference Manual}). Do not put the format string inside double
354 quotes when you insert it in the minibuffer.
355
356 If you use this command while no keyboard macro is being defined or
357 executed, the new format affects all subsequent macro definitions.
358 Existing macros continue to use the format in effect when they were
359 defined. If you set the format while defining a keyboard macro, this
360 affects the macro being defined from that point on, but it does not
361 affect subsequent macros. Execution of the macro will, at each step,
362 use the format in effect at that step during its definition. Changes
363 to the macro format during execution of a macro, like the
364 corresponding changes during its definition, have no effect on
365 subsequent macros.
366
367 The format set by @kbd{C-x C-k C-f} does not affect insertion of
368 numbers stored in registers.
369
370 @node Keyboard Macro Query
371 @section Executing Macros with Variations
372
373 @table @kbd
374 @item C-x q
375 When this point is reached during macro execution, ask for confirmation
376 (@code{kbd-macro-query}).
377 @end table
378
379 @kindex C-x q
380 @findex kbd-macro-query
381 Using @kbd{C-x q} (@code{kbd-macro-query}), you can get an effect
382 similar to that of @code{query-replace}, where the macro asks you each
383 time around whether to make a change. While defining the macro,
384 type @kbd{C-x q} at the point where you want the query to occur. During
385 macro definition, the @kbd{C-x q} does nothing, but when you run the
386 macro later, @kbd{C-x q} asks you interactively whether to continue.
387
388 The valid responses when @kbd{C-x q} asks are @key{SPC} (or @kbd{y}),
389 @key{DEL} (or @kbd{n}), @key{RET} (or @kbd{q}), @kbd{C-l} and @kbd{C-r}.
390 The answers are the same as in @code{query-replace}, though not all of
391 the @code{query-replace} options are meaningful.
392
393 These responses include @key{SPC} to continue, and @key{DEL} to skip
394 the remainder of this repetition of the macro and start right away with
395 the next repetition. @key{RET} means to skip the remainder of this
396 repetition and cancel further repetitions. @kbd{C-l} redraws the screen
397 and asks you again for a character to say what to do.
398
399 @kbd{C-r} enters a recursive editing level, in which you can perform
400 editing which is not part of the macro. When you exit the recursive
401 edit using @kbd{C-M-c}, you are asked again how to continue with the
402 keyboard macro. If you type a @key{SPC} at this time, the rest of the
403 macro definition is executed. It is up to you to leave point and the
404 text in a state such that the rest of the macro will do what you
405 want.@refill
406
407 @kbd{C-u C-x q}, which is @kbd{C-x q} with a numeric argument,
408 performs a completely different function. It enters a recursive edit
409 reading input from the keyboard, both when you type it during the
410 definition of the macro, and when it is executed from the macro. During
411 definition, the editing you do inside the recursive edit does not become
412 part of the macro. During macro execution, the recursive edit gives you
413 a chance to do some particularized editing on each repetition.
414 @xref{Recursive Edit}.
415
416 Another way to vary the behavior of a keyboard macro is to use a
417 register as a counter, incrementing it on each repetition of the macro.
418 @xref{RegNumbers}.
419
420 @node Save Keyboard Macro
421 @section Naming and Saving Keyboard Macros
422
423 @table @kbd
424 @item C-x C-k n
425 Give a command name (for the duration of the Emacs session) to the most
426 recently defined keyboard macro (@code{kmacro-name-last-macro}).
427 @item C-x C-k b
428 Bind the most recently defined keyboard macro to a key sequence (for
429 the duration of the session) (@code{kmacro-bind-to-key}).
430 @item M-x insert-kbd-macro
431 Insert in the buffer a keyboard macro's definition, as Lisp code.
432 @end table
433
434 @cindex saving keyboard macros
435 @findex kmacro-name-last-macro
436 @kindex C-x C-k n
437 If you wish to save a keyboard macro for later use, you can give it
438 a name using @kbd{C-x C-k n} (@code{kmacro-name-last-macro}).
439 This reads a name as an argument using the minibuffer and defines that
440 name to execute the last keyboard macro, in its current form. (If you
441 later add to the definition of this macro, that does not alter the
442 name's definition as a macro.) The macro name is a Lisp symbol, and
443 defining it in this way makes it a valid command name for calling with
444 @kbd{M-x} or for binding a key to with @code{global-set-key}
445 (@pxref{Keymaps}). If you specify a name that has a prior definition
446 other than a keyboard macro, an error message is shown and nothing is
447 changed.
448
449 @cindex binding keyboard macros
450 @findex kmacro-bind-to-key
451 @kindex C-x C-k b
452 You can also bind the last keyboard macro (in its current form) to a
453 key, using @kbd{C-x C-k b} (@code{kmacro-bind-to-key}) followed by the
454 key sequence you want to bind. You can bind to any key sequence in
455 the global keymap, but since most key sequences already have other
456 bindings, you should select the key sequence carefully. If you try to
457 bind to a key sequence with an existing binding (in any keymap), this
458 command asks you for confirmation before replacing the existing binding.
459
460 To avoid problems caused by overriding existing bindings, the key
461 sequences @kbd{C-x C-k 0} through @kbd{C-x C-k 9} and @kbd{C-x C-k A}
462 through @kbd{C-x C-k Z} are reserved for your own keyboard macro
463 bindings. In fact, to bind to one of these key sequences, you only
464 need to type the digit or letter rather than the whole key sequences.
465 For example,
466
467 @example
468 C-x C-k b 4
469 @end example
470
471 @noindent
472 will bind the last keyboard macro to the key sequence @kbd{C-x C-k 4}.
473
474 @findex insert-kbd-macro
475 Once a macro has a command name, you can save its definition in a file.
476 Then it can be used in another editing session. First, visit the file
477 you want to save the definition in. Then use this command:
478
479 @example
480 M-x insert-kbd-macro @key{RET} @var{macroname} @key{RET}
481 @end example
482
483 @noindent
484 This inserts some Lisp code that, when executed later, will define the
485 same macro with the same definition it has now. (You need not
486 understand Lisp code to do this, because @code{insert-kbd-macro} writes
487 the Lisp code for you.) Then save the file. You can load the file
488 later with @code{load-file} (@pxref{Lisp Libraries}). If the file you
489 save in is your init file @file{~/.emacs} (@pxref{Init File}) then the
490 macro will be defined each time you run Emacs.
491
492 If you give @code{insert-kbd-macro} a numeric argument, it makes
493 additional Lisp code to record the keys (if any) that you have bound
494 to @var{macroname}, so that the macro will be reassigned the same keys
495 when you load the file.
496
497 @node Edit Keyboard Macro
498 @section Editing a Keyboard Macro
499
500 @table @kbd
501 @item C-x C-k C-e
502 Edit the last defined keyboard macro (@code{kmacro-edit-macro}).
503 @item C-x C-k e @var{name} @key{RET}
504 Edit a previously defined keyboard macro @var{name} (@code{edit-kbd-macro}).
505 @item C-x C-k l
506 Edit the last 100 keystrokes as a keyboard macro
507 (@code{kmacro-edit-lossage}).
508 @end table
509
510 @findex kmacro-edit-macro
511 @kindex C-x C-k C-e
512 @kindex C-x C-k RET
513 You can edit the last keyboard macro by typing @kbd{C-x C-k C-e} or
514 @kbd{C-x C-k RET} (@code{kmacro-edit-macro}). This formats the macro
515 definition in a buffer and enters a specialized major mode for editing
516 it. Type @kbd{C-h m} once in that buffer to display details of how to
517 edit the macro. When you are finished editing, type @kbd{C-c C-c}.
518
519 @findex edit-kbd-macro
520 @kindex C-x C-k e
521 You can edit a named keyboard macro or a macro bound to a key by typing
522 @kbd{C-x C-k e} (@code{edit-kbd-macro}). Follow that with the
523 keyboard input that you would use to invoke the macro---@kbd{C-x e} or
524 @kbd{M-x @var{name}} or some other key sequence.
525
526 @findex kmacro-edit-lossage
527 @kindex C-x C-k l
528 You can edit the last 100 keystrokes as a macro by typing
529 @kbd{C-x C-k l} (@code{kmacro-edit-lossage}).
530
531 @node Keyboard Macro Step-Edit
532 @section Stepwise Editing a Keyboard Macro
533
534 @findex kmacro-step-edit-macro
535 @kindex C-x C-k SPC
536 You can interactively replay and edit the last keyboard
537 macro, one command at a time, by typing @kbd{C-x C-k SPC}
538 (@code{kmacro-step-edit-macro}). Unless you quit the macro using
539 @kbd{q} or @kbd{C-g}, the edited macro replaces the last macro on the
540 macro ring.
541
542 This macro editing feature shows the last macro in the minibuffer
543 together with the first (or next) command to be executed, and prompts
544 you for an action. You can enter @kbd{?} to get a summary of your
545 options. These actions are available:
546
547 @itemize @bullet{}
548 @item
549 @kbd{SPC} and @kbd{y} execute the current command, and advance to the
550 next command in the keyboard macro.
551 @item
552 @kbd{n}, @kbd{d}, and @kbd{DEL} skip and delete the current command.
553 @item
554 @kbd{f} skips the current command in this execution of the keyboard
555 macro, but doesn't delete it from the macro.
556 @item
557 @kbd{@key{TAB}} executes the current command, as well as all similar
558 commands immediately following the current command; for example, @key{TAB}
559 may be used to insert a sequence of characters (corresponding to a
560 sequence of @code{self-insert-command} commands).
561 @item
562 @kbd{c} continues execution (without further editing) until the end of
563 the keyboard macro. If execution terminates normally, the edited
564 macro replaces the original keyboard macro.
565 @item
566 @kbd{C-k} skips and deletes the rest of the keyboard macro,
567 terminates step-editing, and replaces the original keyboard macro
568 with the edited macro.
569 @item
570 @kbd{q} and @kbd{C-g} cancels the step-editing of the keyboard macro;
571 discarding any changes made to the keyboard macro.
572 @item
573 @kbd{i KEY... C-j} reads and executes a series of key sequences (not
574 including the final @kbd{C-j}), and inserts them before the current
575 command in the keyboard macro, without advancing over the current
576 command.
577 @item
578 @kbd{I KEY...} reads one key sequence, executes it, and inserts it
579 before the current command in the keyboard macro, without advancing
580 over the current command.
581 @item
582 @kbd{r KEY... C-j} reads and executes a series of key sequences (not
583 including the final @kbd{C-j}), and replaces the current command in
584 the keyboard macro with them, advancing over the inserted key
585 sequences.
586 @item
587 @kbd{R KEY...} reads one key sequence, executes it, and replaces the
588 current command in the keyboard macro with that key sequence,
589 advancing over the inserted key sequence.
590 @item
591 @kbd{a KEY... C-j} executes the current command, then reads and
592 executes a series of key sequences (not including the final
593 @kbd{C-j}), and inserts them after the current command in the keyboard
594 macro; it then advances over the current command and the inserted key
595 sequences.
596 @item
597 @kbd{A KEY... C-j} executes the rest of the commands in the keyboard
598 macro, then reads and executes a series of key sequences (not
599 including the final @kbd{C-j}), and appends them at the end of the
600 keyboard macro; it then terminates the step-editing and replaces the
601 original keyboard macro with the edited macro.
602 @end itemize
603
604 @ignore
605 arch-tag: c1b0dd3b-3159-4c08-928f-52e763953e9c
606 @end ignore