The Emacs commands that are used often or that must be quick to type are bound to keys--short sequences of characters--for convenient use. Other Emacs commands that do not need to be brief are not bound to keys; to run them, you must refer to them by name.
A command name is, by convention, made up of one or more words,
separated by hyphens; for example, auto-fill-mode
or
manual-entry
. The use of English words makes the command name
easier to remember than a key made up of obscure characters, even though
it is more characters to type.
The way to run a command by name is to start with M-x, type the command name, and finish it with RET. M-x uses the minibuffer to read the command name. RET exits the minibuffer and runs the command. The string `M-x' appears at the beginning of the minibuffer as a prompt to remind you to enter the name of a command to be run. See section The Minibuffer, for full information on the features of the minibuffer.
You can use completion to enter the command name. For example, the
command forward-char
can be invoked by name by typing
M-x forward-char RET
or
M-x forw TAB c RET
Note that forward-char
is the same command that you invoke with
the key C-f. You can run any Emacs command by name using
M-x, whether or not any keys are bound to it.
If you type C-g while the command name is being read, you cancel the M-x command and get out of the minibuffer, ending up at top level.
To pass a numeric argument to the command you are invoking with M-x, specify the numeric argument before the M-x. M-x passes the argument along to the command it runs. The argument value appears in the prompt while the command name is being read.
Normally, when describing a command that is run by name, we omit the RET that is needed to terminate the name. Thus we might speak of M-x auto-fill-mode rather than M-x auto-fill-mode RET. We mention the RET only when there is a need to emphasize its presence, such as when we show the command together with following arguments.
M-x works by running the command
execute-extended-command
, which is responsible for reading the
name of another command and invoking it.