
Я часто нажимаю неправильную комбинацию клавиш и открываю какой-то непонятный режим минибуфера. Мне приходится нажимать ESC три раза (я думаю), что довольно раздражает. Как заставить emacs выйти из минибуфера всего одним нажатием ESC?
решение1
Спасибо за все ваши идеи. Кажется, это должно сработать:
(define-key minibuffer-local-map (kbd "ESC") 'keyboard-escape-quit)
Это сработало только для isearch. Похоже, мне придется перепривязывать его для каждой функции (smex, ibuffer и всех остальных, которые используют минибуфер).
решение2
я полагаю, чтоэргомакиспользует ESC
клавишу так, как вы хотите. Он также изменяет множество других сочетаний клавиш Emacs - но, вероятно, способами, которые соответствуют вашему желанию "избегать долгих нажатий клавиш Emacsy".
[Предостережение:
Я не эксперт по эргономике, и я знаюнетрекомендую использовать ESC
именно так. ESC
играет особую роль в Emacs относительно Meta
модификаторов и раскладок, и обращаться с ней иначе рано или поздно означает нарваться на неприятности. (Точно так же, C-g
является основополагающим для Emacs и даже жестко закодирована в некоторых случаях, поэтому ее нельзя на 100% заменить другой клавишей.)]
решение3
Я обычно использую следующую комбинацию клавиш: Ctrl- X(вход в командный режим) K(Убить), затем Enter.
Это должно уничтожить текущий мини-буфер.
решение4
Вероятно, вы захотите использовать minibuffer-setup-hook
ESC для привязки к локальной карте каждого минибуфера.
(add-hook 'minibuffer-setup-hook (lambda ()
(local-set-key (kbd "ESC") 'abort-minibuffers))
Поскольку здесь используется локальная карта клавиш для каждого мини-буфера, вам не придется повторно привязывать ее к карте клавиш каждой команды — локальная карта обычно имеет приоритет над тем, что делает эта команда мини-буфера.