Я часто нажимаю неправильную комбинацию клавиш и открываю какой-то непонятный режим минибуфера. Я должен нажать ESC три раза (я думаю), что довольно раздражает. Как заставить emacs выйти из минибуфера одним нажатием ESC?
4 ответа
Я считаю, что ergoemacs использует ключ ESC
так, как вы хотите. Это также меняет множество других привязок клавиш Emacs - но, вероятно, в соответствии с вашим желанием "избегать длительных нажатий клавиш Emacsy".
[ Предостережение: я не эксперт по ergoemacs, и я не рекомендую использовать ESC
таким образом. ESC
играет особую роль в Emacs в отношении модификатора Meta
и таблиц ключей, и если рассматривать его иначе, рано или поздно возникает проблема.
(Точно так же C-g
является фундаментальным для Emacs, и в некоторых случаях даже жестко запрограммирован, поэтому он не может быть заменен на 100% другим ключом.)]
Я обычно использую следующую комбинацию клавиш : Ctrl - X (войти в командный режим) K (Kill), затем Enter.
Это должно убить текущий мини-буфер.
Я хочу сделать то же самое: нажмите ESC, чтобы отменить функцию save-buffers-kill-terminal во время приглашения "Сохранить файл".
Я пытался перепривязать ESC во многих таблицах ключей минибуфера, как упоминалось в этом разделе вопросов и ответов. Тем не менее, я все еще не могу отменить приглашение "Сохранить файл" от ESC.
После поиска некоторых исходных кодов elisp я обнаружил, что query-replace-map является родителем-раскладкой map-y-or-np, который используется save-buffers-kill-terminal. Итак, мое последнее исправление:
(define-key query-replace-map (kbd "<escape>") 'keyboard-quit)
Обратите внимание, что он отключает все ярлыки с мета-ключом.
Спасибо за все ваши идеи. Похоже, это должно сработать:
(define-key minibuffer-local-map (kbd "ESC") 'keyboard-escape-quit)
Это работало только на isearch. Похоже, мне пришлось бы перепривязать его для каждой функции (smex, ibuffer и всех тех, которые используют минибуфер).