Go to the previous, next chapter.
Emacs provides extensive help features accessible through a single character, C-h. C-h is a prefix key
that is used only for documentation-printing commands. The characters that you can type
after C-h are called help options. One help option is C-h; that is how you ask for help
about using C-h. To cancel, type C-g. The function key F1
is equivalent to C-h.
C-h C-h displays a list of the possible
help options, each with a brief description. Before you type a help option, you can use SPC or DEL to
scroll through the list.
C-h or F1 means ``help'' in various other contexts as well. For
query-replace, it describes the options available. After a prefix
key, it displays a list of the alternatives that can
follow the prefix key. (A few prefix keys don't support this because they define other
meanings for C-h.)
Here is a summary of the defined help commands.
- C-h a regexp RET
Display list of commands whose names match regexp (
- C-h b Display a table of all key bindings in effect now, in this order: minor
mode bindings, major mode bindings, and global bindings
- C-h c key Print the name of the command
that key runs (
describe-key-briefly). Here c stands for
`character'. For more extensive information on key,
use C-h k.
- C-h f function RET Display documentation on the Lisp
function named function (
describe-function). Since commands are
Lisp functions, a command name may be used.
- C-h i Run Info, the program for browsing documentation files (
The complete Emacs manual is available on-line in Info.
- C-h k key Display name and documentation of the command that key runs (
- C-h l Display a description of the last 100 characters you typed (
- C-h m Display documentation of the current major mode (
- C-h n Display documentation of Emacs changes, most recent first (
- C-h p Find packages by topic keyword (
- C-h s Display current contents of the syntax table, plus an explanation of what
they mean (
describe-syntax). See section The
- C-h t Enter the Emacs interactive tutorial (
- C-h v var RET Display the documentation of the Lisp variable var (
- C-h w command RET Print
which keys run the command named command (
- C-h C-f function RET Enter Info and go to the node
documenting the Emacs function function (
- C-h C-k key Enter Info and go to the node where the key sequence key
is documented (
- C-h C-c Display the copying conditions for GNU Emacs.
- C-h C-d Display information about getting new versions of GNU Emacs.
- C-h C-p Display information about the GNU Project.
The most basic C-h options are C-h c (
and C-h k (
describe-key). C-h c key prints
in the echo area the name of the command that key
is bound to. For example, C-h c C-f prints forward-char. Since command names are chosen to describe what the commands do,
this is a good way to get a very brief description of what key does.
C-h k key is similar but gives more information: it displays the
documentation string of the command as well as its name. This is too big for the echo
area, so a window is used for the display.
C-h c and C-h k work for any sort of key sequences, including
function keys and mouse events.
C-h f (
describe-function) reads the name of a Lisp function
using the minibuffer, then displays that function's
documentation string in a window. Since commands are Lisp functions, you can use
this to get the documentation of a command that you
know by name. For example,
C-h f auto-fill-mode RET
displays the documentation of
auto-fill-mode. This is the only way to get
the documentation of a command that is not bound to any
key (one which you would normally run using M-x).
C-h f is also useful for Lisp functions that you are planning to use in a
Lisp program. For example, if you have just written the expression
and want to check that you are using
make-vector properly, type C-h f
make-vector RET. Because C-h f allows all function names, not just command names, you may find that some of your favorite
abbreviations that work in M-x don't work in C-h f. An abbreviation
may be unique among command names yet fail to be unique
when other function names are allowed.
The function name for C-h f to describe has a default which is used if you
type RET leaving the minibuffer empty. The
default is the function called by the innermost Lisp expression in the buffer around point, provided
that is a valid, defined Lisp function name. For example, if point is located following the text (make-vector (car x), the innermost list containing point
is the one that starts with (make-vector, so the default is to describe the
C-h f is often useful just to verify that you have the right spelling for
the function name. If C-h f mentions a name from the buffer as the default, that name must be defined as a Lisp
function. If that is all you want to know, just type C-g to cancel the C-h
f command, then go on editing.
C-h w command RET
tells you what keys are bound to command. It
prints a list of the keys in the echo area. If it says
the command is not on any key, you must use M-x
to run it. C-h w runs the command
C-h v (
is like C-h f but describes Lisp variables instead of Lisp functions. Its
default is the Lisp symbol around or before point, but
only if that is the name of a known Lisp variable. See
A more sophisticated sort of question to ask is, ``What are the commands for working
with files?'' To ask this question, type C-h a file RET, which displays a list of all command
names that contain file, including
and so on. With each command name appears a brief
description of how to use the command, and what keys
you can currently invoke it with. For example, it would say that you can invoke
by typing C-x C-f. The a in C-h a stands for `Apropos'; C-h
a runs the command
Because C-h a looks only for functions whose names contain the string which you specify, you must use ingenuity in
choosing the string. If you are looking for commands
for killing backwards and C-h a kill-backwards RET
doesn't reveal any, don't give up. Try just kill, or just backwards,
or just back. Be persistent. Also note that you can use a regular expression as
the argument, for more flexibility (see section Syntax of
Here is a set of arguments to give to C-h a that covers many classes of
Emacs commands, since there are strong conventions for naming the standard Emacs commands.
By giving you a feel for the naming conventions, this set should also serve to aid you in
developing a technique for picking
char, line, word, sentence, paragraph, region, page, sexp, list, defun, rect, buffer, frame, window, face,
file, dir, register, mode, beginning, end, forward, backward, next, previous, up, down,
search, goto, kill, delete, mark, insert, yank, fill,
indent, case, change, set, what, list, find, view,
To list all Lisp symbols that contain a match for a regexp, not just the ones that are defined as commands,
use the command M-x apropos instead of C-h
a. This command does not check key bindings by
default; specify a numeric argument if you want it to check them.
super-apropos command is like
apropos except that it
searches documentation strings as well as symbol names for matches for the specified
The C-h p command lets you search the
standard Emacs Lisp libraries by topic keywords. Here is a partial list of keywords you can use:
- abbrev Abbreviation handling, typing shortcuts,
macros. bib Support for the bibliography processor
bib. c C and
C++ language support. calendar Calendar and time management support. comm
Communications, networking, remote access to files. data Support for editing files
of data. debugging Support for debugging programs. docs Support for Emacs
documentation. emulations Emulations of other editors. extensions Emacs Lisp
language extensions. faces Support for using faces (fonts and colors; see section Using Multiple Typefaces). frames Support for Emacs
frames and window systems. games Games, jokes
and amusements. hardware Support for interfacing with exotic hardware. help
Support for on-line help systems. hypermedia Support for links within text, or other media types. i18n
Internationalization and alternate character-set
support. internal Code for Emacs internals, build process, defaults. languages
Specialized modes for editing programming languages. lisp Support for using Lisp
(including Emacs Lisp). local Libraries local to your site. maint Maintenance aids for the
Emacs development group. mail Modes for
electronic-mail handling. matching Searching and matching. news Support for netnews
reading and posting. non-text Support for
editing files that are not ordinary text. oop
Support for object-oriented programming. outlines Hierarchical outlining. processes
Process, subshell, compilation, and job control
support. terminals Support for terminal types. tex Support for the TeX
formatter. tools Programming tools. unix Front-ends/assistants for, or
emulators of, Unix features. vms Support code for VMS. wp Word processing.
C-h i (
info) runs the Info program, which is used for browsing
through structured documentation files. The entire Emacs manual is available within Info.
Eventually all the documentation of the GNU system will be available. Type h
after entering Info to run a tutorial on using Info.
There are two special help commands for accessing Emacs documentation through Info. C-h
C-f function RET enters Info and goes straight to the
documentation of the Emacs function function. C-h C-k key
enters Info and goes straight to the documentation of the key key. These two
keys run the commands
If something surprising happens, and you are not sure what commands you typed, use C-h
view-lossage). C-h l prints the last 100 command characters you typed in. If you see commands that
you don't know, you can use C-h c to find out what they do.
Emacs has numerous major modes, each of which redefines a few keys and makes a few
other changes in how editing works. C-h m (
documentation on the current major mode, which normally describes all the commands that
are changed in this mode.
C-h b (
describe-bindings) and C-h s (
present other information about the current Emacs mode. C-h b displays a list of all the key bindings now in effect; the local bindings defined by the current minor modes first,
then the local bindings defined by the current major
mode, and finally the global bindings (see section Customizing Key Bindings). C-h s displays the
contents of the syntax table, with explanations of each character's
syntax (see section The Syntax Table).
You can get a similar list for a particular prefix
key by typing C-h after the prefix key. (There are a few prefix keys for which
this does not work---those that provide their own bindings for C-h. One of
these is ESC, because ESC C-h is actually C-M-h, which
marks a defun.)
The other C-h options display various files of useful information. C-h
C-w displays the full details on the complete absence of warranty for GNU Emacs. C-h
view-emacs-news) displays the file emacs/etc/NEWS, which
contains documentation on Emacs changes arranged chronologically. C-h t (
displays the learn-by-doing Emacs tutorial. C-h C-c (
displays the file emacs/etc/COPYING, which tells you the conditions you must obey
in distributing copies of Emacs. C-h C-d (
displays the file emacs/etc/DISTRIB, which tells you how you can order a copy of
the latest version of Emacs. C-h C-p (
general information about the GNU Project.