GNU Emacs Manual - Keyboard Macros

Go to the first, previous, next, last section, table of contents.

## Keyboard Macros

A keyboard macro is a command defined by the user to stand for another sequence of keys. For example, if you discover that you are about to type `C-n C-d` forty times, you can speed your work by defining a keyboard macro to do `C-n C-d` and calling it with a repeat count of forty.

`C-x (`
  Start defining a keyboard macro (`start-kbd-macro`).
`C-x )`
  End the definition of a keyboard macro (`end-kbd-macro`).
`C-x e`
  Execute the most recent keyboard macro (`call-last-kbd-macro`).
`C-u C-x (`
  Re-execute last keyboard macro, then add more keys to its definition.
`C-x q`
  When this point is reached during macro execution, ask for confirmation (`kbd-macro-query`).
`M-x name-last-kbd-macro`
  Give a command name (for the duration of the session) to the most recently defined keyboard macro.
`M-x insert-kbd-macro`
  Insert in the buffer a keyboard macro's definition, as Lisp code.
`C-x C-k`
  Edit a previously defined keyboard macro (`edit-kbd-macro`).
`M-x apply-macro-to-region-lines`
  Run the last keyboard macro on each complete line in the region.

Keyboard macros differ from ordinary Emacs commands in that they are written in the Emacs command language rather than in Lisp. This makes it easier for the novice to write them, and makes them more convenient as temporary hacks. However, the Emacs command language is not powerful enough as a programming language to be useful for writing anything intelligent or general. For such things, Lisp must be used.

You define a keyboard macro while executing the commands which are the definition. Put differently, as you define a keyboard macro, the definition is being executed for the first time. This way, you can see what the effects of your commands are, so that you don't have to figure them out in your head. When you are finished, the keyboard macro is defined and also has been, in effect, executed once. You can then do the whole thing over again by invoking the macro.

Go to the first, previous, next, last section, table of contents.