Як дано ім'я команди emacs, як би ви знайшли прив'язку клавіш? (і навпаки)


107

Якщо я знаю ім'я команди emacs, каже: "goto-line"; що робити, якщо я хочу запитати, чи є якісь послідовності ключів, пов'язані з цією командою?

І навпаки, з урахуванням послідовності ключів, як я можу знайти його ім'я команди?

Відповіді:


159

Щоб просто знайти ключові прив’язки для команди, ви можете скористатися функцією довідки 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 ?


51
Ви також C-h w <function name>можете знати, де саме знаходиться ключ, а не повну документацію. І навпаки, ви можете також C-h c <key sequence>просто знати, яка функція пов'язана з ключовою послідовністю.
ShreevatsaR

7
також: Ch w зазвичай пов'язаний з де-is.
Cheeso

2
Отже, я можу де-є де-є, коли забуду Ч ш. Це чудово ! ;)
Саке

1
Для тих, хто пов'язаний C-hз чимось іншим у своїх віконних менеджерах: C-h wрівнозначно M-x where-is. C-h kеквівалентно M-x describe-key. C-h fеквівалентно M-x describe-function. C-h vеквівалентно M-x describe-variable. C-h ?еквівалентно M-x help-for-help. Також зверніть увагу, що f1можна використовувати замість C-h.
Рікардо

13

C-h w(або F1-w): where-isRET деякекоманда RET

Виконує лише те, що ви просите, - перераховує зв'язані ключі без додаткової інформації. :)


13

Для інтерактивного отримання команди, прив'язаної до комбінації клавіш (або послідовності клавіш у термінах 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 не використовують їх у своїх файлах init, але ця функція, що має доктрину, здається, говорить про інше. Кожен, хто розглядає можливість використання, where-is-internalповинен спочатку перевірити, чи можна замінити клавіші перезавантаження, а не досягти своєї мети.

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


Дивлячись на документацію, можна where-is-internalстверджувати, що це нормально. Крім того, ми звичайно використовуємо формат на зразок where-is--internal(зверніть увагу на подвійний тире) для "приватних" функцій.
GergelyPolonkai

2
Використання суфіксу -internalописано там: gnu.org/software/emacs/manual/html_node/elisp/… . Його слід використовувати для внутрішніх функцій С.
Тобіас

4

Старе питання, але на користь нових читачів, є ще деякі приємні способи побачити ключові прив’язки

M-x describe-bindings

Перераховує всі наявні в даний час прив’язки, використовує пошук, відбуватися тощо, щоб добре використати цей список.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.