Учитывая имя команды emacs, как бы вы нашли привязки клавиш? (и наоборот) - PullRequest
95 голосов
/ 08 июня 2009

Если я знаю имя команды emacs, говорит "goto-line"; Что делать, если я хочу спросить, есть ли какие-либо последовательности клавиш, связанные с этой командой?

И наоборот, учитывая последовательность клавиш, как мне найти имя ее команды?

Ответы [ 4 ]

144 голосов
/ 08 июня 2009

Чтобы просто найти привязки клавиш для команды, вы можете использовать функцию справки emacs "where-is"

C-h w command-name

Если для команды установлено несколько привязок, они все будут перечислены.

Для обратного, учитывая последовательность клавиш, вы можете набрать

C-h k key-sequence

Чтобы получить команду, которая будет выполняться.

Вы можете получить подробную информацию о команде, а также о любой неинтерактивной функции, набрав

C-h f function-name

которая даст вам подробную информацию о функции, включая любые привязки клавиш для нее.

C-h f variable-name

Карты ключей хранятся в переменных, однако коды ключей хранятся в необработанном формате. Попробуйте C-h v isearch-mode-map для примера.

Для получения дополнительной помощи по ее получению вы можете набрать

C-h ?
12 голосов
/ 24 июля 2013

C-h w (или F1-w): where-is RET somecommandname RET

Делает только то, что вы спрашиваете - перечисляет связанные ключи без дополнительной информации. :)

12 голосов
/ 27 марта 2013

Чтобы интерактивно связать команду с сочетанием клавиш (или последовательностью клавиш в терминах Emacs), см. Выбранный ответ.

Для программного получения команды, связанной с данной последовательностью клавиш, используйте функцию key-binding или lookup-key, которая берет последовательность клавиш и возвращает свою связанную команду. Функция key-binding - это то, что C-h k использует.

(key-binding (kbd "C-h m"))

возвращает команду, связанную с C-h m, путем поиска во всех текущих таблицах клавиш. Функция lookup-key выполняет поиск в одной карте ключей:

(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char

Для программного связывания всех последовательностей клавиш, связанных с данной командой, where-is-internal, вероятно, является функцией, которую нужно использовать. Название функции, оканчивающейся на internal, по-видимому, указывает на то, что пользователям Emacs не следует использовать в своих файлах инициализации, но эта функция, имеющая строку документации, предлагает другое. Любой, кто рассматривает возможность использования where-is-internal, должен сначала проверить, могут ли переназначить ключи вместо этого достичь своей цели.

Альтернативой для нахождения ключей, привязанных к конкретной команде (например, forward-char), является substitute-command-keys (например, (substitute-command-keys "\\[forward-char]")). Это особенно полезно в больших текстах.

3 голосов
/ 02 сентября 2016

Старый вопрос, но для новых читателей есть и другие приятные способы увидеть привязки клавиш

M-x describe-bindings

Перечисляет все доступные в настоящее время привязки, использует isearch, Встречаются и т. Д., Чтобы эффективно использовать этот список.

M-x describe-prefix-map

Здесь показаны все привязки, доступные в текущем режиме, вы можете использовать буфер отображения, как любой другой буфер Emacs, доступный только для чтения, например, вы можете свободно искать строки и т. Д.

M-x describe-mode

Помимо предоставления общей информации о текущем режиме, в нем также будут перечислены все доступные привязки клавиш.

M-x describe-minor-mode

Вам будет предложено ввести имя второстепенного режима, а затем отобразится информация и привязки клавиш для этого второстепенного режима.

ПРИМЕЧАНИЕ : в приведенных ниже примерах используются дополнительные пакеты (доступны из MELPA )

Какой ключ

Здесь показаны привязки непосредственно перед тем, как они вам понадобятся. Введите префикс, например C-x или C-c, и отобразится список доступных для этого префикса привязок.

Вы также можете просмотреть список привязок клавиш, доступных в текущем режиме, используя:

M-x which-key-show-top-level

Полезно связать which-key-show-top-level с аккордом по вашему выбору, чтобы вы могли просматривать доступные ключи из любого места.

Например, C-s (isearch-forward) имеет обширную карту ключей, которая часто неизвестна. например M-s o начинает occur с использованием текущей строки поиска, я не знал об этом много лет, когда использовал Emacs. Наличие which-key помогло мне обнаружить много редких драгоценных камней в Emacs.

https://github.com/justbur/emacs-which-key

Направляющий ключ

Направляющая клавиша работает так же, как и which-key. Я бы порекомендовал взглянуть на нее, чтобы сравнить функции.

https://github.com/kai2nenobu/guide-key

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...