4 Keys and Commands
This manual is full of passages that tell you what particular keys
do. But Emacs does not assign meanings to keys directly. Instead,
Emacs assigns meanings to named commands, and then gives keys
their meanings by binding them to commands.
Every command has a name chosen by a programmer. The name is usually
made of a few English words separated by dashes; for example,
next-line
or forward-word
. A command also has a
function definition which is a Lisp program; this is what makes
the command do what it does. In Emacs Lisp, a command is actually a
special kind of Lisp function; one which specifies how to read arguments
for it and call it interactively. For more information on commands and
functions, see What Is a Function. (The definition we use in this manual is
simplified slightly.)
The bindings between keys and commands are recorded in various tables
called keymaps. See Keymaps.
When we say that “C-n moves down vertically one line” we are
glossing over a distinction that is irrelevant in ordinary use but is vital
in understanding how to customize Emacs. It is the command
next-line
that is programmed to move down vertically. C-n has
this effect because it is bound to that command. If you rebind
C-n to the command forward-word
then C-n will move
forward by words instead. Rebinding keys is a common method of
customization.
In the rest of this manual, we usually ignore this distinction to
keep things simple. We will often speak of keys like C-n as
commands, even though strictly speaking a key is bound to some
command. To give the information needed for customization, we state
the name of the command which really does the work in parentheses
after mentioning the key that runs it. For example, we will say that
“The command C-n (next-line
) moves point vertically
down,” meaning that next-line
is a command that moves
vertically down, and C-n is a key that is normally bound to it.
While we are on the subject of information for customization only,
it's a good time to tell you about variables. Often the
description of a command will say, “To change this, set the variable
mumble-foo
.” A variable is a name used to remember a value.
Most of the variables documented in this manual exist just to facilitate
customization: some command or other part of Emacs examines the variable
and behaves differently according to the value that you set. Until you
are interested in customizing, you can ignore the information about
variables. When you are ready to be interested, read the basic
information on variables, and then the information on individual
variables will make sense. See Variables.