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