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.
C-g
para desanclarlo, la ESC
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) como meta-prefix-key
. Del manual de Elisp:
'esc-map' es el mapa de teclas global para la clave de prefijo. Por lo tanto, las definiciones globales de todos los metacaracteres se encuentran aquí. Este mapa también es la definición de la función de 'ESC-prefix'.
y
En cambio, los metacaracteres se consideran para la búsqueda de claves como secuencias de dos caracteres, el primero de los cuales es ESC (o lo que sea actualmente el valor de 'meta-prefix-char'). Por lo tanto, la clave 'M-a' se representa internamente como 'ESC a', y su enlace global se encuentra en la ranura para 'a' en 'esc-map'.
Por lo tanto, para usar ESC para otra cosa, deberá establecer meta-pefix-key
otra cosa y también vincular alguna otra clave ESC-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.
meta-prefix-char
que nil
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. El esc-map
se define en el nivel de código fuente C dentro keymap.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 usando meta-prefix-char
, que es 27
como usted indicó.
Encantadora respuesta aquí: https://superuser.com/a/945245/624661
Citando:
Puede usar esto en su archivo de inicio de Emacs:
;;; esc always quits
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
(global-set-key [escape] 'keyboard-quit)
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 ASCII ESC
, y como se menciona en glucas , ciertamente no quieres reasignar este. Pero Escno es ASCII ESC
: es símbolo escape
, al menos en un entorno gráfico. ¿Cómo ocurre que la unión (kbd "ESC")
afecta Escentonces? Esto sucede porque Emacs traduce escape
a ESC
si no hay disponibles para la uniónescape
. Una especie de respaldo si lo desea (que se implementa por medio de local-function-key-map
si está interesado en tales cosas).
Por lo tanto, cuando se une [escape]
, está a salvo y no tiene que preocuparse ESC
; aparte de sus propios enlaces, solo tiene que aumentar los mapas de teclas que dicen ESC
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 (the input-decode-map
).
Espero que esto ayude.
universal-argument
conuniversal-argument-map
.