Me gustaría usar la ESC
clave en lugar de C-g
para keyboard-quit
. Mi enfoque ingenuo para hacer
(define-key global-map (kbd "ESC") 'keyboard-quit)
No funciona. ESC
sigue siendo una tecla de prefijo y presionarla no llama keyboard-quit
.
key-bindings
Geier
fuente
fuente
universal-argument
conuniversal-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
ESC
funcionalidad 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-g
tecla por alguna razón, pero eso ocurre raramente.fuente
C-g
para desanclarlo, laESC
reasignación no funciona en este caso.ESC
así 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
ESC
solo, 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-key
otra 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 ESC
ya le ofrece el comportamiento de escape que desea: consulte el manual de Emacs, Nodo Saliendo .meta-prefix-char
quenil
en 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-map
se define en el nivel de código fuente C dentrokeymap.c
. Está destinado a ser utilizado como una clave de prefijo.esc-map
prefijo 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 es27
como 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 traduceescape
aESC
si no hay disponibles para la uniónescape
. Una especie de respaldo si lo desea (que se implementa por medio delocal-function-key-map
si 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 dicenESC
cuá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