File: bind-key.el.html

If you have lots of keybindings set in your init file, it can be hard to know which ones you haven't set yet, and which may now be overriding some new default in a new Emacs version. This module aims to solve that problem.

Bind keys as follows in your init file:

  (bind-key "C-c x" 'my-ctrl-c-x-command)

If the keybinding argument is a vector, it is passed straight to define-key, so remapping a key with [remap COMMAND] works as expected:

  (bind-key [remap original-ctrl-c-x-command] 'my-ctrl-c-x-command)

If you want the keybinding to override all minor modes that may also bind the same key, use the bind-key* form:

  (bind-key* "<C-return>" 'other-window)

If you want to rebind a key only in a particular keymap, use:

  (bind-key "C-c x" 'my-ctrl-c-x-command some-other-mode-map)

To unbind a key within a keymap (for example, to stop your favorite major mode from changing a binding that you don't want to override everywhere), use unbind-key:

  (unbind-key "C-c x" some-other-mode-map)

To bind multiple keys at once, or set up a prefix map, a bind-keys macro is provided. It accepts keyword arguments, please see its documentation for a detailed description.

To add keys into a specific map, use :map argument

   (bind-keys :map dired-mode-map
              ("o" . dired-omit-mode)
              ("a" . some-custom-dired-function))

To set up a prefix map, use :prefix-map and :prefix arguments (both are required)

   (bind-keys :prefix-map my-customize-prefix-map
              :prefix "C-c c"
              ("f" . customize-face)
              ("v" . customize-variable))

You can combine all the keywords together. Additionally,
:prefix-docstring can be specified to set documentation of created
:prefix-map variable.

To bind multiple keys in a bind-key* way (to be sure that your bindings will not be overridden by other modes), you may use bind-keys* macro:

   (bind-keys*
    ("C-o" . other-window)
    ("C-M-n" . forward-page)
    ("C-M-p" . backward-page))

After Emacs loads, you can see a summary of all your personal keybindings currently in effect with this command:

  M-x describe-personal-keybindings

This display will tell you if you've overridden a default keybinding, and what the default was. Also, it will tell you if the key was rebound after your binding it with bind-key, and what it was rebound it to.

See the use-package info manual for more information.

Defined variables (7)

bind-key-column-widthsWidth of columns in ‘describe-personal-keybindings’.
bind-key-describe-special-formsIf non-nil, extract docstrings from lambdas, closures and keymaps if possible.
bind-key-segregation-regexpRegexp used by M-x describe-personal-keybindings to divide key sets.
override-global-mapKeymap for ‘override-global-mode’.
override-global-modeNon-nil if Override-Global mode is enabled.
override-global-mode-hookHook run after entering or leaving ‘override-global-mode’.
personal-keybindingsList of bindings performed by ‘bind-key’.

Defined functions (13)

bind-key(KEY-NAME COMMAND &optional KEYMAP PREDICATE)
bind-key*(KEY-NAME COMMAND &optional PREDICATE)
bind-key--compare-keybindings(L R)
bind-key--get-binding-description(ELEM)
bind-key--remove(KEY KEYMAP)
bind-keys(&rest ARGS)
bind-keys*(&rest ARGS)
bind-keys-form(ARGS KEYMAP)
compare-keybindings(L R)
describe-personal-keybindings()
get-binding-description(ELEM)
override-global-mode(&optional ARG)
unbind-key(KEY-NAME &optional KEYMAP)

Defined faces (0)