Eu gostaria de usar a ESC
chave em vez de C-g
para keyboard-quit
. Minha abordagem ingênua de apenas fazer
(define-key global-map (kbd "ESC") 'keyboard-quit)
não funciona. ESC
ainda é uma tecla de prefixo e pressioná-lo não chama keyboard-quit
.
key-bindings
Geier
fonte
fonte
universal-argument
com ouniversal-argument-map
.Respostas:
Você pode fazer
(define-key key-translation-map (kbd "ESC") (kbd "C-g"))
. Eu fiz o mesmo há muito tempo e não tive problemas.Edite para melhorar a resposta de acordo com os comentários:
Se você deseja manter a
ESC
funcionalidade principal, pode fazer(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Uma coisa a observar é que, se o Emacs travar, você ainda precisará usar a
C-g
chave por algum motivo, mas isso raramente acontece.fonte
C-g
para liberá-lo, oESC
remapeamento não funciona nesse caso.ESC
então isso não me incomodou. Mas se você precisar, pode fazer outra tradução, por exemplo(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Meu conselho seria deixar em
ESC
paz, porque é uma chave especial.Por padrão, o Emacs usa
ESC
(ASCII 27) como ometa-prefix-key
. No Manual Elisp:e
Portanto, para usar o ESC para outra coisa, você precisará definir
meta-pefix-key
outra coisa e também vincular alguma outra chaveESC-prefix
. Também pode haver outras alterações necessárias - nunca tentei isso.Para mais informações
meta-prefix-char
, consulte Funções para pesquisa de chaves no manual Elisp.fonte
ESC
. Ligue outra chavekeyboard-quit
, se quiser. E esteja ciente de queESC ESC ESC
já lhe fornece o comportamento de escape que você deseja - consulte o manual do Emacs, nó Quitting .meta-prefix-char
comonil
no OSX não impedirá que ele seja uma chave de prefixo - apenas o separará da meta-chave. No OSX com uma versão gráfica do Emacs, eu gosto de separar a chave de escape da meta-chave - defino(setq meta-prefix-char nil)
no início da minha inicialização para que todas as bibliotecas carregadas posteriormente entendam o que eu quero. Isso me permite usar a meta-chave como chave de prefixo e a tecla de escape como uma chave de prefixo. Oesc-map
é definido no nível do código-fonte C dentrokeymap.c
. Ele deve ser usado como uma chave de prefixo.esc-map
prefixo para preservar as ligações M padrão?(setq ns-alternate-modifier 'meta)
que torna a meta a tecla alt esquerda no teclado da Apple. Eu gosto de usar a tecla alt à direita para criar caracteres unicode usando as configurações padrão do OSX:(setq ns-right-alternate-modifier 'none)
- para inserir caracteres em espanhol, símbolos de parágrafos, etc. Ao criar--with-ns
, as teclas alt esquerda e direita são definidas como meta. A configuração padrão vincula a chave de escape à meta-chave no OSX usando ometa-prefix-char
, que é27
como você afirmou.Resposta adorável aqui: https://superuser.com/a/945245/624661
Citação:
Você pode usar isso no seu arquivo Emacs init:
fonte
Você deseja ligar
[escape]
, não(kbd "ESC")
, como mostram as ligações referenciadas por Ole . Em estoque, isso funcionará apenas se o emacs frames em um sistema de janelas. Eu acho que isso vale um pouco de explicação.(kdb "ESC")
significa, na verdade, o caractere de controle ASCIIESC
e, como glucas mencionou, você certamente não deseja remapear este. Mas Escnão é ASCIIESC
: é símboloescape
, pelo menos em um ambiente gráfico. Como ocorre que a ligação(kbd "ESC")
afeta Escentão? Isso acontece porque o emacs se traduzescape
emESC
se não houver ligação disponível paraescape
. Tipo de fallback, se desejar (que é implementado por meio delocal-function-key-map
se você estiver interessado em tais coisas).Assim, quando você se liga
[escape]
, você está seguro e não precisa se preocuparESC
; além de suas próprias ligações, você apenas precisa aumentar os mapas de teclas que indicamESC
quando eles significam[escape]
.Hmm ... bem, quase. Por que esses mapas não são usados
[escape]
na primeira vez? Porque isso não vai funcionar em um terminal. Se você deseja Esctrabalhar em um dispositivo desse tipo, terá pelo menos para personalizar seu terminal antes.A história do terminal é relatada em outro post: Como vincular C- [de verdade? . O que você precisa fazer é dizer ao terminal para enviar uma sequência personalizada quando Escpressionado e, em seguida, mapeá-la para
[escape]
um estágio inicial de entrada no emacs (theinput-decode-map
).Espero que isto ajude.
fonte