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