Me gustaría usar la ESCclave en lugar de C-gpara keyboard-quit. Mi enfoque ingenuo para hacer
(define-key global-map (kbd "ESC") 'keyboard-quit)
No funciona. ESCsigue siendo una tecla de prefijo y presionarla no llama keyboard-quit.
key-bindings
Geier
fuente
fuente

universal-argumentconuniversal-argument-map.Respuestas:
Puedes hacer
(define-key key-translation-map (kbd "ESC") (kbd "C-g")). Hice lo mismo hace mucho tiempo y no tuve problemas.Edite para mejorar la respuesta de acuerdo con los comentarios:
Si desea mantener la
ESCfuncionalidad clave, puede hacer(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))Una cosa a tener en cuenta es que si Emacs se cuelga, todavía tiene que usar la
C-gtecla por alguna razón, pero eso ocurre raramente.fuente
C-gpara desanclarlo, laESCreasignación no funciona en este caso.ESCasí que esto no me molestó. Pero si lo necesita, puede hacer otra traducción, por ejemplo(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))Mi consejo sería dejarlo
ESCsolo, porque es una clave especial.Por defecto, Emacs usa
ESC(ASCII 27) comometa-prefix-key. Del manual de Elisp:y
Por lo tanto, para usar ESC para otra cosa, deberá establecer
meta-pefix-keyotra cosa y también vincular alguna otra claveESC-prefix. Es posible que también se requieran otros cambios, nunca lo he intentado.Para obtener más información
meta-prefix-char, consulte Funciones para la búsqueda de claves en el manual de Elisp.fuente
ESC. Ate otra clave akeyboard-quit, si lo desea. Y tenga en cuenta queESC ESC ESCya le ofrece el comportamiento de escape que desea: consulte el manual de Emacs, Nodo Saliendo .meta-prefix-charquenilen OSX no desactivarlo de ser una tecla prefijo - sólo separarla de la tecla meta. En OSX con una versión gráfica de Emacs, me gusta separar la clave de escape de la metaclave: configuré(setq meta-prefix-char nil)al comienzo de mi inicialización para que todas las bibliotecas cargadas posteriormente entiendan que eso es lo que quiero. Esto me da la posibilidad de usar la meta clave como prefijo y la tecla de escape como prefijo. Elesc-mapse define en el nivel de código fuente C dentrokeymap.c. Está destinado a ser utilizado como una clave de prefijo.esc-mapprefijo para preservar los enlaces M predeterminados?(setq ns-alternate-modifier 'meta)que hace que meta sea la tecla alt izquierda en el teclado de Apple. Me gusta usar la tecla alt derecha para crear caracteres unicode usando la configuración predeterminada de OSX:(setq ns-right-alternate-modifier 'none)- para insertar caracteres españoles, símbolos de párrafo, etc. Al construir--with-ns, las teclas alt izquierda y derecha están configuradas en meta. La configuración predeterminada vincula la tecla de escape a la meta clave en OSX usandometa-prefix-char, que es27como usted indicó.Encantadora respuesta aquí: https://superuser.com/a/945245/624661
Citando:
Puede usar esto en su archivo de inicio de Emacs:
fuente
Desea vincular
[escape], no(kbd "ESC"), como muestran los enlaces a los que hace referencia Ole . En stock, esto funcionará solo si emacs se enmarca en un sistema de ventanas. Creo que esto vale un poco de explicación.(kdb "ESC")significa en realidad el carácter de control ASCIIESC, y como se menciona en glucas , ciertamente no quieres reasignar este. Pero Escno es ASCIIESC: es símboloescape, al menos en un entorno gráfico. ¿Cómo ocurre que la unión(kbd "ESC")afecta Escentonces? Esto sucede porque Emacs traduceescapeaESCsi no hay disponibles para la uniónescape. Una especie de respaldo si lo desea (que se implementa por medio delocal-function-key-mapsi está interesado en tales cosas).Por lo tanto, cuando se une
[escape], está a salvo y no tiene que preocuparseESC; aparte de sus propios enlaces, solo tiene que aumentar los mapas de teclas que dicenESCcuándo quieren decir[escape].Hmm ... bueno, casi. ¿Por qué estos mapas no se usan
[escape]por primera vez? Porque esto no funcionará en una terminal. Si desea su Esctrabajo en un dispositivo de este tipo, tendrá que, como mínimo, personalizar su terminal antes.La historia de la terminal se informa en otra publicación: ¿Cómo vincular C- [de verdad? . Lo que tiene que hacer es decirle al terminal que envíe una secuencia personalizada cuando Escse presiona, luego asigne esta secuencia a
[escape]una etapa de entrada temprana en emacs (theinput-decode-map).Espero que esto ayude.
fuente