Я никогда не сталкивался с ресурсом такого рода вещей. Авторы пакетов могут свободно добавлять и изменять привязки клавиш, как в своих собственных раскладках, так и в глобальной раскладке. Было бы сложно поддерживать индекс.
Emacs может загружать функции динамически, поэтому активные команды клавиш также являются динамическими и зависят от установленных вами функций и required
. Например, если вы не требуете paredit, вы не сможете проверить его раскладку.
M-x describe-bindings
расскажет вам о привязках клавиш, которые в настоящий момент загружен Emacs. Это длинный список! Функция show-key-bindings
ниже будет обрезать это до привязок, которые используют ключи-модификаторы.
(defun get-bindings()
(with-temp-buffer
(describe-buffer-bindings (current-buffer))
(buffer-string)))
(defun format-binding (b)
(let ((ws (split-string b)))
(apply 'format "%s\t%s" (butlast ws) (last ws))))
(defun binding? (str)
(string-match-p (rx bol (any "C" "M" "H" "S")) str))
(defun join-string-lines (lines)
(mapconcat 'identity lines "\n"))
(defun show-key-bindings()
"Show the active keybindings for the current buffer."
(interactive)
(let* ((bs (split-string (get-bindings) "\n" t))
(fmt (mapcar 'format-binding (remove-if-not 'binding? bs))))
(save-excursion
(let ((help-window-select t))
(with-help-window "*active bindings*"
(princ (join-string-lines fmt)))))))
Просто резюмировать, есть несколько функций, которые можно использовать для настройки привязок:
global-set-key
Используйте это, когда вы хотите, чтобы некоторые команды, чтобы быть всегда доступны ,
local-set-key
Устанавливает ключ выжидать для текущего буфера. Мне нравится использовать это в моих крючках, чтобы сделать привязку клавиш доступной для определенного режима.
define-key
Добавляет команду к раскладке клавиатуры. Ключ-карта уже должна быть привязана, поэтому это может быть слишком хрупким для использования в вашей конфигурации.
Если вы обеспокоены случайно переопределения привязок A Режим в вас EMACS конфигурации, проще всего сделать, это выяснить, действительно ли вам нужна команда, чтобы быть глобальной. Используйте local-set-key
, где вы можете.
Вы также можете изучить пакеты, такие как key-chord (M-x package-install key-chord
), или определить свои собственные второстепенные режимы с помощью настраиваемых раскладок, если вы обнаружите, что у вас заканчиваются ключи.
С некоторыми виртуозными сценариями оболочки или Elisp, это должно быть возможно разобрать список Elisp файлов и извлечение комбинаций клавиш они определяют. Я мог бы изучить это позже.
В то же время следующая команда оболочки unix найдет все ссылки на вышеуказанные формы привязки ключей в дереве каталогов. Вы можете запустить это в своем .emacs.d, чтобы проверить привязки клавиш, установленные в ваших пакетах elpa.
tree -fxi -P '*.el' | xargs egrep -s 'local-set-key|define-key|global-set-key'
Просто уточнение, что 'местного установленный key' устанавливает ключ привязки для текущего буфера локальной * * (клавиатурной раскладки, которые могут быть распределены между многими буферами, как правило, это основной режим карты). Очевидно, это означало, но формулировка была немного неоднозначной. – phils