O comportamento para o qual você está procurando está incorporado na função Emacs Lisp keyboard-quit
, vinculada por padrão a C-g
(Control-g). Seu comportamento é aproximadamente equivalente, no contexto do Emacs, à função usual de C-c
em um shell; ele irá interromper qualquer código Lisp e o levará de volta ao nível superior. (Em particular, se você está sendo solicitado a inserir texto no minibuffer e decidir que não quer fazer o que é que está lhe pedindo, afinal de contas, C-g é como você o cancela.)
Um simples toque na tecla Escape, por padrão, funciona como uma chave de prefixo Meta; isto é, um atalho que envolve a chave Meta (por exemplo, M-x
, execute-extended-command
) funcionará tão bem se você pressionar Alt-x, ou se você pressionar Escape e pressionar X - o Emacs não se diferencia. Pressionar três vezes a tecla Escape executará keyboard-escape-quit
, que é como keyboard-quit
, mas com mais de um comportamento "faça o que eu quero dizer" - algo que nunca precisei em vários anos de uso do Emacs e, de fato, não Não sei até alguns minutos atrás, mas você pode achar útil.
Falando de coisas que você pode achar útil: Você pode obter documentação sobre qualquer função do Emacs através da função describe-function
, chamada como C-h f FUNCTION-NAME RET
(ou seja, pressione e solte Control -h, pressione f, digite um nome de função no prompt, pressione Return) ou como M-x describe-function RET FUNCTION-NAME RET
. Para variáveis, é o mesmo, exceto C-h v
ou describe-variable
, além do nome da variável; para pressionamentos de tecla, é C-h k
ou describe-key
e você digita o acorde de chave cuja ligação deseja descrever. Essas três funções, além de C-h m
para recuperar a documentação nos modos principal e secundário do buffer atual, são extremamente úteis para descobrir como o Emacs funciona e o que ele pode fazer, e eu os recomendo entusiasticamente como a melhor e mais rápida maneira de reduzir o grau em que o Emacs parece estranho e intimidante.
Agora, finalmente, para responder sua pergunta: pode ser possível reconfigurar o mapeamento de chave padrão do Emacs, de forma que ele diferencie a tecla Escape e a tecla Meta. No entanto, eu realmente não recomendo que você tente fazê-lo, por alguns motivos.
Em primeiro lugar, embora eu tenha certeza de que há uma maneira de fazê-lo, isso necessariamente será obscuro e complicado, e terá muito potencial para dar errado de maneiras não óbvias - algo que, enquanto bom para os veteranos do Emacs, não é realmente aconselhável quando você está tentando aprender o editor. Pior, se você tentar fazer isso de maneira ingênua e óbvia (por exemplo,M-: (global-set-key (kbd "ESC") 'keyboard-quit) RET
), você quebrará completamente o comportamento das teclas Meta. Na verdade, fazer com que funcione corretamente exigirá que você desça aos níveis mais baixos do processamento de eventos de entrada do Emacs - use um farol, traga um facão e prepare um almoço. (Talvez dois almoços).
Segundo, mesmo que você consiga que a ligação funcione de forma confiável, ela é muito diferente do padrão, enquanto qualquer Emacs que você usar, em qualquer lugar, terá C-g
limitado a keyboard-quit
. Especialmente ao aprender o editor, é aconselhável ficar o mais familiar possível com os atalhos de teclado padrão, em vez de religar as coisas de uma forma que funcionará apenas com seus próprios arquivos init do Emacs. (Se você pode garantir que você nunca usará um Emacs em qualquer lugar, mas em sua própria caixa, ou que você sempre será capaz de instalar seus arquivos init, ótimo! Vá para ele. Além disso, para este propósito, um modo Vim que faz parte da biblioteca padrão do Emacs conta como "default", porque você pode invocá-lo em qualquer Emacs instalado corretamente via M-x vim-mode RET
ou similar.
tl: dr: Provavelmente você pode fazer isso com o ESC, mas será necessário um hackter horrível para fazer isso, assumindo que é possível, e é melhor você se acostumar com os recursos que o Emacs fornece por padrão para invocar o comportamento que você quer.