8.6 Repeating Minibuffer Commands
Every command that uses the minibuffer once is recorded on a special
history list, the command history, together with the values of
its arguments, so that you can repeat the entire command. In
particular, every use of M-x
is recorded there, since M-x
uses the minibuffer to read the command name.
C-x ESC ESC
Re-execute a recent minibuffer command from the command history
( repeat-complex-command
).
M-x list-command-history
Display the entire command history, showing all the commands
C-x ESC ESC
can repeat, most recent first.
C-x ESC ESC
re-executes a recent command that used
the minibuffer. With no argument, it repeats the last such command.
A numeric argument specifies which command to repeat; 1 means the last
one, 2 the previous, and so on.
C-x ESC ESC
works by turning the previous command
into a Lisp expression and then entering a minibuffer initialized with
the text for that expression. Even if you don’t know Lisp, it will
probably be obvious which command is displayed for repetition. If you
type just RET
, that repeats the command unchanged. You can also
change the command by editing the Lisp expression before you execute
it. The executed command is added to the front of the command history
unless it is identical to the most recent item.
Once inside the minibuffer for C-x ESC ESC
, you
can use the usual minibuffer history commands (see Minibuffer History) to move through the history list. After finding the desired
previous command, you can edit its expression as usual and then execute
it by typing RET
.
Incremental search does not, strictly speaking, use the minibuffer.
Therefore, although it behaves like a complex command, it normally
does not appear in the history list for C-x ESC ESC
.
You can make incremental search commands appear in the history by
setting isearch-resume-in-command-history
to a non- nil
value. See Incremental Search.
The list of previous minibuffer-using commands is stored as a Lisp
list in the variable command-history
. Each element is a Lisp
expression that describes one command and its arguments. Lisp programs
can re-execute a command by calling eval
with the
command-history
element.