Come far uscire emacs dal minibuffer con una pressione di ESC?


1

Spesso premo la combinazione sbagliata di tasti e apro qualche oscura modalità minibuffer. Devo premere ESC tre volte (penso), il che è piuttosto fastidioso. Come posso fare in modo che emacs esca dal minibuffer con una sola pressione di ESC?


1
C-gdovrebbe essere il default per abort-recursive-edituscire dal minibuffer, a meno che tu non abbia un altro recursive-editattivo. Potresti anche scrivere la tua funzione usando quella top-levelche interrompe tutti i livelli recursive-edited esce dal minibuffer. Mi piace una funzione personalizzata scritta da Stefan che mi permette di controllare il tasto Esc per utilizzarlo come sia un tasto di modifica e anche come una chiave che funziona con la sola pressione: stackoverflow.com/questions/20026083/...
lawlist

Questo può essere spostato su SO in modo che io possa mettere una taglia sulla domanda e ottenere qualche elisp utilizzabile?
The Unfun Cat,

Ecco qualcosa di simile a quello che stai cercando, ma è non è raccomandato. Puoi sempre commentarlo più tardi se decidi di volere il comportamento predefinito: La (global-set-key (kbd "<escape>") 'top-level) (define-key minibuffer-local-map "<escape>" 'top-level) (define-key minibuffer-local-ns-map "<escape>" 'top-level) (define-key minibuffer-local-completion-map "<escape>" 'top-level) (define-key minibuffer-local-must-match-map "<escape>" 'top-level) (define-key minibuffer-local-isearch-map "<escape>" 'top-level) mia raccomandazione, tuttavia, è quella di utilizzare la funzione scritta da Stefan (sopra).
elenco delle leggi

Risposte:


2

Credo che ergoemacs usi la ESCchiave nel modo desiderato. Cambia anche molte altre combinazioni di tasti di Emacs, ma probabilmente in modi che concordano con il tuo desiderio di "evitare i tasti lunghi di emacsy".

[ Avvertenza: non sono un esperto di ergoemacs e non consiglio di usarlo in ESCquesto modo. ESCha un ruolo particolare in Emacs con il Metamodificatore e le keymap, e trattarlo altrimenti richiede problemi prima o poi. (Allo stesso modo, C-gè fondamentale per Emacs, ed è addirittura codificato in alcuni casi, quindi non è sostituibile al 100% con un'altra chiave.)]


1

Di solito uso la seguente combinazione di tasti: Ctrl- X(entra in modalità comando) K(Kill), quindi Enter.

Questo dovrebbe uccidere l'attuale mini-buffer.


Grazie, ma sto cercando di evitare lunghe pressioni di emacsy. Questo è un tasto in più di quello che uso attualmente (ESC ESC ESC); Vorrei solo premere ESC una volta per uscire dal minibuffer.
The Unfun Cat,

0

Grazie per tutte le tue idee Sembra che questo dovrebbe fare il trucco:

(define-key minibuffer-local-map (kbd "ESC") 'keyboard-escape-quit)

Funzionava solo per isearch. Sembra che dovrei ricollegarlo per ogni singola funzione (smex, ibuffer e tutti quelli che usano il minibuffer).


0

Voglio fare una cosa simile: premere ESC per annullare la funzione save-buffers-kill-terminal durante il prompt "Salva file".

Ho cercato di ricollegare ESC in molte keymap dei minibuffer, come menzionato in queste domande e risposte . Tuttavia, non riesco ancora a cancellare il prompt "Salva file" da ESC.

Dopo aver scavato alcuni codici sorgente elisp, ho scoperto che query-replace-map è il keymap-parent di map-y-o-np, che viene utilizzato da save-buffers-kill-terminal. Quindi la mia soluzione finale è:

(define-key query-replace-map (kbd "<escape>") 'keyboard-quit)

Nota che disabilita tutte le scorciatoie con il tasto meta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.