Если я знаю имя команды emacs, говорит: "goto-line"; что, если я хочу спросить, есть ли какие-либо последовательности клавиш, связанные с этой командой?
И наоборот, учитывая последовательность клавиш, как я могу найти ее имя команды?
Если я знаю имя команды emacs, говорит: "goto-line"; что, если я хочу спросить, есть ли какие-либо последовательности клавиш, связанные с этой командой?
И наоборот, учитывая последовательность клавиш, как я могу найти ее имя команды?
Чтобы просто найти привязки клавиш для команды, вы можете использовать функцию справки emacs "где есть"
C-h w command-name
Если для команды установлено несколько привязок, они все будут перечислены.
Для обратного, учитывая последовательность клавиш, вы можете набрать
C-h k key-sequence
Чтобы получить команду, которая будет работать.
Вы можете получить подробную информацию о команде, а также о любой неинтерактивной определенной функции, набрав
C-h f function-name
Который предоставит вам подробную информацию о функции, включая любые привязки клавиш для нее, и
C-h v variable-name
предоставит вам информацию о любой (связанной) переменной. Карты ключей хранятся в переменных, однако коды ключей хранятся в необработанном формате. Попробуйте C-h v isearch-mode-map
для примера.
Для получения дополнительной информации о получении справки вы можете ввести
C-h ?
Чтобы в интерактивном режиме связать команду с сочетанием клавиш (или последовательностью клавиш в терминах Emacs), см. Выбранный ответ.
Для программного получения команды, привязанной к заданной последовательности клавиш, используйте функцию key-binding
или lookup-key
которая берет последовательность клавиш и возвращает свою связанную команду. Функция key-binding
это то, что использует Ch k
.
(key-binding (kbd "C-h m"))
возвращает команду, связанную с Ch m
путем поиска во всех текущих раскладках клавиш. Функция lookup-key
выполняет поиск в единой таблице 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]")
). Это особенно полезно в больших текстах.
C-h w
(или F1-w
): where-is
RET somecommandname RET
Делает то, что вы просите - перечисляет связанные ключи без дополнительной информации.:)
Старый вопрос, но для новых читателей есть и другие хорошие способы увидеть привязки клавиш
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
. Я бы рекомендовал взглянуть на него, чтобы сравнить функции.