Previous: , Up: Minibuffer   [Contents][Index]


6.5 Repeating Minibuffer Commands

Every command that uses the minibuffer at least once is recorded on a special history list, 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 (repeat-complex-command).

M-p

Within C-x ESC ESC, move to previous recorded command (previous-history-element).

M-n

Within C-x ESC ESC, move to the next (more recent) recorded command (next-history-element).

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 is used to re-execute a recent minibuffer-using command. With no argument, it repeats the last such command. A numeric argument specifies which command to repeat; one means the last one, and larger numbers specify earlier ones.

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. If you type just RET, the command is repeated as before. You can also change the command by editing the Lisp expression. Whatever expression you finally submit is what will be executed. The repeated command is added to the front of the command history unless it is identical to the most recently executed command already there.

Even if you don’t understand Lisp syntax, it will probably be obvious which command is displayed for repetition. If you do not change the text, you can be sure the command will repeat exactly as before.

If you are in the minibuffer for C-x ESC ESC and the command shown to you is not the one you want to repeat, you can move around the list of previous commands using M-n and M-p. M-p replaces the contents of the minibuffer with the next earlier recorded command, and M-n replaces it with the next later command. After finding the desired previous command, you can edit its expression and then resubmit it by typing RET. Any editing you have done on the command to be repeated is lost if you use M-n or M-p.

M-n and M-p are specially defined within C-x ESC ESC to run the commands previous-history-element and next-history-element.

The list of previous commands using the minibuffer is stored as a Lisp list in the variable command-history. Each element of the list is a Lisp expression which describes one command and its arguments. Lisp programs can reexecute a command by feeding the corresponding command-history element to eval.


Previous: , Up: Minibuffer   [Contents][Index]