Есть ли в emacs эквивалент действия поиска реактивных мозгов по имени и палитре команд Atom?

Этот диалог «найти любую команду» в этих IDE/редакторах делает новые функции и сочетания клавиш более доступными.

Есть ли у Emacs аналог? Тип M-x работает, но в нем отсутствует намек на аннотацию привязки клавиш, а также он не так гибок с автозаполнением по сравнению с этими случаями.


person daj    schedule 28.09.2015    source источник
comment
Хороший вопрос. Связанные способы обнаружения команд, помимо обычно хороших меню, discover и hydras: masteringemacs.org/articles/2013/12/21/ и github.com/abo-abo/hydra/wiki   -  person Ehvince    schedule 13.10.2015


Ответы (2)


Да - apropos-command, связанный с C-h a. Со страницы помощи:

Показать команды (интерактивно вызываемые функции), соответствующие ШАБЛОНУ. ШАБЛОН может быть словом, списком слов (разделенных пробелами) или регулярным выражением (с использованием некоторых специальных символов регулярного выражения). Если это слово, ищите совпадения для этого слова как подстроки. Если это список слов, найдите совпадения для любых двух (или более) этих слов.

Другие команды справки также очень полезны — C-g ?, чтобы увидеть их все. Аналогами apropos-command являются: describe-key C-h k, описывающая функцию, привязанную к последовательности клавиш; describe-variable C-h v, что должно быть очевидно; и describe-bindings C-h b, в котором перечислены все определенные на данный момент ключи.

person Yossarian    schedule 29.09.2015
comment
Еще больше похожи на apropos-command все остальные команды apropos-*. См. (естественно) M-x apropos-command RET apropos RET - person phils; 29.09.2015

M-x может быть лучше с хорошим завершением:

советник-Mx

Вам нужно установить пакет counsel из MELPA и привязать команду:

(global-set-key (kbd "M-x") 'counsel-M-x)

Как видите, привязка клавиш указана для каждой связанной команды. Запрос представляет собой регулярное выражение (отсюда и начальное ^), пробелы являются дикими (т.е. .*). Кроме того, если вы установите пакет smex из MELPA, ваши любимые команды будут перечислены перед другими соответствующими командами; это запоминается во всех сеансах Emacs (в файле ~/.smex_items).

Вот несколько похожих команд:

(global-set-key (kbd "<f1> f") 'counsel-describe-function)
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
(global-set-key (kbd "<f1> l") 'counsel-load-library)

Также обратите внимание, что вам нужен этот параметр для дополнительных граней минибуфера:

(setq ivy-display-style 'fancy)
person abo-abo    schedule 29.09.2015
comment
IIUC вы также можете установить пакет swiper из GNU ELPA, который поставляется с counsel.el. - person Stefan; 29.09.2015
comment
Ты прав. Однако версия ELPA отстает на 1 месяц. Я обновлю его сейчас. - person abo-abo; 29.09.2015