Emacs: Keyboard Macro
Emacs keyboard key macro (kmacro) feature lets you record and playback keystrokes. The key strokes can include calling any emacs commands.
Record a Key Macro
- To start recording, press Ctrl+x ( (
kmacro-start-macro
). - Type your keystrokes.
- To stop recording, press Ctrl+x ) (
kmacro-end-macro
).
If you made a mistake, you can cancel Ctrl+g (keyboard-quit
) and start over.
Run Keyboard Macro
To run the keystrokes you've just recorded, use one of:
- Alt+x
call-last-kbd-macro
- Alt+x
kmacro-end-and-call-macro
【Ctrl+x e】
another useful command to run key macro is
- Alt+x
apply-macro-to-region-lines
Save Keyboard Macro
Key macro can be saved for future use.
To save the macro:
- Alt+x
name-last-kbd-macro
and give it a name. - Alt+x
insert-kbd-macro
. This will insert the lisp code for a named kmacro at the cursor position. - Copy and Paste the code into your Emacs Init File.
- In future emacs session, you can call your kmacro by name. e.g. Alt+x name.
You can now also give it a keyboard shortcut, such as F8. [see Emacs: How to Define Keybinding]

Emacs Keyboard Macro video tutorial
Turn Off line-move-visual
When you record keystrokes, you might want the arrow up/down keys move the cursor by a logical line, as opposed to visual line. For how to change that, see: Emacs: line-move-visual.
Reference
(info "(emacs) Keyboard Macros")