Il m'arrive souvent d'appuyer sur une mauvaise combinaison de touches et d'ouvrir un obscur mode minibuffer. Je dois appuyer sur ESC trois fois (je crois), ce qui est assez ennuyeux. Comment faire pour qu'emacs quitte le minibuffer avec une seule pression sur ESC ?
Réponses
Trop de publicités?Merci pour toutes vos idées. Il semble que cela devrait faire l'affaire :
(define-key minibuffer-local-map (kbd "ESC") 'keyboard-escape-quit)
Ça ne fonctionne que pour isearch. Il me semble que je devrais le relier pour chaque fonction (smex, ibuffer, et toutes les autres qui utilisent le minibuffer).
Je crois que ergoemacs utilise le ESC
comme vous le souhaitez. Il modifie également de nombreuses autres combinaisons de touches Emacs - mais probablement d'une manière qui correspond à votre désir d'"éviter les longues pressions sur les touches Emacs".
[ Attention : Je ne suis pas un expert d'ergoemacs, et je ne pas recommande d'utiliser ESC
de cette façon. ESC
a un rôle particulier dans Emacs par rapport à la fonction Meta
et les claviers, et le traiter autrement revient à s'attirer des ennuis tôt ou tard. (De même, C-g
est fondamentale pour Emacs, et est même codée en dur dans certains cas, elle n'est donc pas remplaçable à 100% par une autre clé)].
Je veux faire une chose similaire : appuyer sur ESC pour annuler la fonction save-buffers-kill-terminal pendant l'invite "Save file".
J'ai essayé de relier ESC dans de nombreux keymaps de minibuffer comme mentionné dans cette Q&R . Cependant, je ne peux toujours pas annuler l'invite "Enregistrer le fichier" par ESC.
Après avoir creusé quelques codes sources elisp, j'ai trouvé que query-replace-map est le keymap-parent de map-y-or-n-p, qui est utilisé par save-buffers-kill-terminal. Donc ma solution finale est :
(define-key query-replace-map (kbd "<escape>") 'keyboard-quit)
Notez qu'il désactive tous les raccourcis avec la touche méta.