Risposte:
Si può fare (define-key key-translation-map (kbd "ESC") (kbd "C-g"))
. Ho fatto lo stesso molto tempo fa e non ho avuto problemi.
Modifica per migliorare la risposta in base ai commenti:
Se vuoi mantenere la ESC
funzionalità chiave, puoi farlo
(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Una cosa da notare è che se Emacs si blocca è comunque necessario utilizzare la C-g
chiave per qualche motivo, ma ciò accade raramente.
C-g
per sbloccarlo, il ESC
remapping non funziona in questo caso.
ESC
quindi questo non mi ha disturbato. Ma se ne hai bisogno puoi fare un'altra traduzione, ad esempio(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Il mio consiglio sarebbe di lasciar ESC
perdere, perché è una chiave speciale.
Per impostazione predefinita, Emacs utilizza ESC
(ASCII 27) come meta-prefix-key
. Dal manuale Elisp:
'esc-map' è la keymap globale per la chiave prefisso. Pertanto, le definizioni globali di tutti i meta-personaggi si trovano effettivamente qui. Questa mappa è anche la definizione della funzione di "prefisso ESC".
e
Invece, i meta-personaggi sono considerati ai fini della ricerca chiave come sequenze di due caratteri, il primo dei quali è ESC (o qualunque sia attualmente il valore di 'meta-prefisso-char'). Pertanto, la chiave 'M-a' è rappresentata internamente come 'ESC a', e il suo legame globale si trova nello slot per 'a' in 'esc-map'.
Quindi, per usare ESC per qualcos'altro dovresti impostare meta-pefix-key
qualcos'altro e anche associare qualche altra chiave a ESC-prefix
. Potrebbero essere necessari anche altri cambiamenti: non l'ho mai provato.
Per ulteriori informazioni meta-prefix-char
, consultare Funzioni per la ricerca dei tasti nel manuale Elisp.
ESC
. Associa un'altra chiave a keyboard-quit
, se vuoi. E tieni presente che ESC ESC ESC
ti dà già il comportamento di fuga che desideri: consulta il manuale di Emacs, nodo Esci .
meta-prefix-char
di nil
su su OSX non lo disabiliterà come chiave prefisso, ma lo separerà solo dalla meta chiave. Su OSX con una versione grafica di Emacs, mi piace avere la chiave di escape separata dalla meta-chiave - ho impostato (setq meta-prefix-char nil)
all'inizio della mia inizializzazione in modo che tutte le librerie caricate successivamente capiscano che è quello che voglio. Questo mi dà la possibilità di usare la meta chiave come chiave di prefisso e la chiave di escape come chiave di prefisso. Il valore esc-map
è definito a livello di codice C-source all'interno keymap.c
. È pensato per essere usato come chiave prefisso.
esc-map
prefisso per preservare i collegamenti M predefiniti?
(setq ns-alternate-modifier 'meta)
che rende meta il tasto alt sinistro sulla tastiera Apple. Mi piace usare il tasto alt destro per creare caratteri unicode usando le impostazioni predefinite OSX: (setq ns-right-alternate-modifier 'none)
- per inserire caratteri spagnoli, simboli di paragrafo, ecc. Durante la costruzione --with-ns
, sia il tasto alt sinistro che quello destro sono impostati su meta. L'impostazione predefinita lega la chiave di escape alla meta chiave su OSX usando il meta-prefix-char
, che è 27
come hai detto.
Bella risposta qui: https://superuser.com/a/945245/624661
citando:
Puoi usarlo nel tuo file init di 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)
Non si vuole vincolare [escape]
, (kbd "ESC")
come mostrano gli attacchi a cui fa riferimento Ole . Disponibile, funzionerà solo se emacs frame in un sistema a finestre. Penso che questo valga un po 'di spiegazione.
(kdb "ESC")
significa in realtà il carattere di controllo ASCII ESC
, e come ha detto Glucas , sicuramente non vorrai rimappare questo. Ma Escnon è ASCII ESC
: è un simbolo escape
, almeno in un ambiente grafico. Come si verifica che il legame (kbd "ESC")
colpisce Escallora? Ciò accade perché emacs si traduce escape
in ESC
se non è disponibile alcuna associazione perescape
. Tipo di fallback se lo si desidera (che viene implementato mediante local-function-key-map
se siete interessati a tali cose).
Quindi, quando ti leghi [escape]
, sei al sicuro e non devi preoccuparti ESC
; a parte le tue associazioni, devi solo aumentare le mappe dei tasti che dicono ESC
quando significano [escape]
.
Hmm ... beh, quasi. Perché queste mappe non vengono utilizzate [escape]
per la prima volta? Perché questo non funzionerà in un terminale. Se vuoi Esclavorare su un dispositivo del genere, devi almeno personalizzare il tuo terminale prima.
La storia del terminale è riportata in un altro post:
Come legare C- [per davvero? . Quello che devi fare è dire al terminale di inviare una sequenza personalizzata quando Escviene premuto, quindi mappare questa sequenza [escape]
in una fase iniziale di input in emacs (il input-decode-map
).
Spero che sia di aiuto.
universal-argument
con iluniversal-argument-map
.