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

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

Например, если я не ошибаюсь, стандартный Emacs просто назначает (или по умолчанию) newline для S-возврата, но в организационном режиме S-return вызывает org-table-copy-down.

Есть ли простой способ выяснить, какие режимы (как основные, так и второстепенные) сопоставляют функцию с конкретным ярлыком? Я могу найти все ярлыки одного основного режима, используя describe-mode, но я хотел бы найти их для всех различных режимов. Я не возражаю, если бы это работало только для всех загруженных в данный момент режимов.

По сути, я хотел бы найти «бесплатные» или «относительно редко переназначаемые» сочетания клавиш, которые также легко набирать (т.е. мне не нужно делать " Cc a», потому что для начала Cc — это очень запутанная клавиша, а затем нужно нажать другую клавишу — это слишком много для меня. Я больше после повторного сопоставления C-o, S-return, M-/ и других тривиальных и быстрых комбо).


person Cedric Martin    schedule 09.10.2013    source источник


Ответы (3)


Вы можете найти привязки текущего режима, используя C-h b. Вы можете получить все доступные в настоящее время раскладки клавиш, используя accessible-keymaps. Вы можете найти все функции, загруженные через переменную features. Но вам придется потрудиться, чтобы найти все возможные привязки для всех возможных режимов из всех файлов, которые вы загрузили до сих пор.

Я рекомендую вам делать это для определенного режима, по одному режиму за раз. Легко проверить привязки клавиш данного режима.

Вы даже можете проверить привязки раскладок (таких как карты минибуфера или карты Isearch), которые трудно увидеть иначе, если вы используете команду C-h M-k (describe-keymap) из библиотеки `help-fns+.el. Я использую это, когда хочу увидеть, какие клавиши все еще доступны в данной раскладке и т. д.

person Drew    schedule 09.10.2013

Вы можете использовать

M-x описать несвязанные ключи

узнать бесплатные ключи.

Это из сторонней библиотеки, как сказано в комментариях.

person aartist    schedule 11.10.2013
comment
Подтверждение того, рекомендуете ли вы стандартную библиотеку или стороннюю библиотеку, всегда является хорошей идеей :) emacswiki.org/emacs/unbound.el - person phils; 11.10.2013

Я не знаю ответа на ваш конкретный вопрос, но я могу дать вам свое решение для получения простых в использовании сочетаний клавиш, которые не конфликтуют с другими режимами.

В моей настройке я переназначил CAPS-LOCK на Alt. Большинство людей сопоставляют его с CTRL, но я могу относительно легко нажать CTRL, в то время как ALT сложно. При такой настройке одной из самых простых комбинаций клавиш является M-space. Поэтому я использую это как свою личную карту ключей:

(define-prefix-command 'ty-keymap)
(global-set-key "\M- " ty-keymap)
(define-key ty-keymap " " 'just-one-space) 
(define-key ty-keymap "j" 'join-next-line)
(define-key ty-keymap "s" 'mark-sexp)
(define-key ty-keymap "c" 'org-capture)
...

Примечание: по умолчанию M-пространство привязано к just-one-space, что полезно. Я переместил это в М-пространство-пространство. Дважды ударить большим пальцем по клавише пробела лишь на долю секунды медленнее, чем один раз, так что это не большая потеря.

Поскольку M-space по умолчанию не является раскладкой, эта настройка позволяет мне использовать все клавиши на клавиатуре без дальнейших изменений. Это много полезного, гарантированно не конфликтующего с другими пакетами, поскольку пакеты с хорошим поведением не будут нарушать базовую привязку клавиш Emacs.

Вы можете предпочесть другую комбинацию клавиш, но идея та же. Вы даже можете использовать функциональную клавишу в качестве префикса-команды, чтобы вы могли делать <f5>, за которым следует буква для ваших команд.

person Tyler    schedule 09.10.2013
comment
+1 обоим, но этот умный ... Конечно, я уже использую Caps-lock как CTRL, поэтому мне придется найти что-то еще. Я посмотрю, что я могу придумать, но мне кажется удобным иметь быстрый доступ к множеству бесплатных карт :) - person Cedric Martin; 09.10.2013
comment
Мои пять копеек - у меня Mod4 (это как альтернативный шифт) на клавише ;. Это более 30 однотональных аккордов по цене одной тональности. Кроме того, Mod4 сочетается с C- и M-, так что там есть еще 60 ярлыков. - person abo-abo; 09.10.2013
comment
@abo-abo Интересная идея! Я не уверен, что буду использовать ; в качестве модификатора, но, может быть, в качестве клавиши префикса команды. Я собираюсь поиграть с этим. Ваше здоровье! - person Tyler; 09.10.2013
comment
@CedricMartin C-spc привязан к set-mark-command. Я использую это довольно много, так что, возможно, это не очень хорошо для переключения. Я также поэкспериментировал с M-o, который я связываю с execute-extended-command, то есть M-x. Я никогда не использую команду, привязанную к M-o, а до M-x мне неудобно добираться. - person Tyler; 09.10.2013
comment
@abo-abo: да, это здорово, но ... у меня уже есть mod4, зарезервированный исключительно для моего оконного менеджера (поэтому я уверен, что мои ярлыки WM не будут конфликтовать ни с одним приложением). Итак, я думаю, мне нужен еще один модификатор ; ) - person Cedric Martin; 10.10.2013