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-widths | Width of columns in ‘describe-personal-keybindings’. |
bind-key-describe-special-forms | If non-nil, extract docstrings from lambdas, closures and keymaps if possible. |
bind-key-segregation-regexp | Regexp used by M-x describe-personal-keybindings to divide key sets. |
override-global-map | Keymap for ‘override-global-mode’. |
override-global-mode | Non-nil if Override-Global mode is enabled. |
override-global-mode-hook | Hook run after entering or leaving ‘override-global-mode’. |
personal-keybindings | List 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) |