8.1 Using the Minibuffer
When the minibuffer is in use, it appears in the echo area, with a
cursor. The minibuffer starts with a prompt, usually ending
with a colon. The prompt states what kind of input is expected, and
how it will be used. The prompt is highlighted using the
minibuffer-prompt
face (see Text Faces).
The simplest way to enter a minibuffer argument is to type the text,
then RET
to submit the argument and exit the minibuffer.
Alternatively, you can type C-g
to exit the minibuffer by
canceling the command asking for the argument (see Quitting and Aborting).
Sometimes, the prompt shows a default argument, inside
parentheses before the colon. This default will be used as the
argument if you just type RET
. For example, commands that read
buffer names usually show a buffer name as the default; you can type
RET
to operate on that default buffer. You can customize how
the default argument is shown with the user option
minibuffer-default-prompt-format
.
If you enable Minibuffer Electric Default mode, a global minor mode,
Emacs hides the default argument as soon as you modify the contents of
the minibuffer (since typing RET
would no longer submit that
default). If you ever bring back the original minibuffer text, the
prompt again shows the default. Furthermore, if you change the
variable minibuffer-eldef-shorten-default
to a non- nil
value, the default argument is displayed as ‘ [default-arg]
’
instead of ‘ (default default-arg)
’, saving some screen
space. To enable this minor mode, type M-x minibuffer-electric-default-mode
.
Since the minibuffer appears in the echo area, it can conflict with other uses of the echo area. If an error message or an informative message is emitted while the minibuffer is active, the message is displayed in brackets after the minibuffer text for a few seconds, or until you type something; then the message disappears. While the minibuffer is in use, Emacs does not echo keystrokes.
While using the minibuffer, you can switch to a different frame,
perhaps to note text you need to enter (see Frame Commands). By
default, the active minibuffer moves to this new frame. If you set
the user option minibuffer-follows-selected-frame
to
nil
, then the minibuffer stays in the frame where you opened
it, and you must switch back to that frame in order to complete (or
abort) the current command. If you set that option to a value which
is neither nil
nor t
, the minibuffer moves frame only
after a recursive minibuffer has been opened in the current command
(see (elisp)Recursive Mini). This option is mainly to retain
(approximately) the behavior prior to Emacs 28.1. Note that the
effect of the command, when you finally finish using the minibuffer,
always takes place in the frame where you first opened it. The sole
exception is that when that frame no longer exists, the action takes
place in the currently selected frame.