Eu freqüentemente pressiono a combinação errada de teclas e abro algum modo obscuro do minibuffer. Eu tenho que pressionar ESC três vezes (eu acho), o que é muito chato. Como eu faço o emacs sair do minibuffer com apenas um toque de ESC?
1
C-g
deve padrão paraabort-recursive-edit
que sairá do minibuffer, a menos que você tenha outrarecursive-edit
ativo. Você também pode escrever sua própria função usandotop-level
que aborta todos os níveis derecursive-edit
e sai do minibuffer. Eu gosto de uma função personalizada escrita por Stefan que me permite controlar a chave de escape para usá-la como uma tecla modificadora e também como uma tecla que funciona com apenas uma tecla: stackoverflow.com/questions/20026083/…(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)
Minha recomendação, no entanto, é usar a função escrita por Stefan (acima).Respostas:
eu acredito ergoemacs usa o
ESC
tecla do jeito que você quiser. Ele também muda muitas outras combinações de teclas do Emacs - mas provavelmente de uma maneira que concorde com o seu desejo de "evitar teclados longos do emacsy".[ Embargo: Eu não sou especialista em ergoemacs, e eu faço não recomendo usar
ESC
dessa maneira.ESC
tem um papel particular no EmacsMeta
modificador e keymaps, e tratá-lo de outra forma é pedir problemas mais cedo ou mais tarde. (Similarmente,C-g
é fundamental para o Emacs, e até é codificado em alguns casos, por isso não é 100% substituível por outra chave.]]fonte
Eu costumo usar a seguinte combinação de teclas: Ctrl - X (entre no modo de comando) K (Matar), então Entrar .
Isso deve matar o mini-buffer atual.
fonte
Obrigado por todas as suas idéias. Parece que isso deve fazer o truque:
(define-key minibuffer-local-map (kbd "ESC") 'keyboard-escape-quit)
Só funcionou para isearch. Parece que eu teria que revinculá-lo para cada função (smex, ibuffer e todos os outros que usam o minibuffer).
fonte
Eu quero fazer coisa semelhante: pressione ESC para cancelar a função de salvar buffers-kill-terminal durante o prompt "Salvar arquivo".
Eu tentei revincular o ESC em muitos keymaps minibuffer como mencionado em este Q & amp; A . No entanto, ainda não consigo cancelar o prompt "Salvar arquivo" pelo ESC.
Depois de cavar alguns códigos-fonte elisp, descobri que o query-replace-map é o pai-de-mapa-chave do map-y-or-n-p, que é usado pelo save-buffers-kill-terminal. Então minha correção final é:
Note que desativa todos os atalhos com meta-chave.
fonte