Ti sentirai più a tuo agio in un X11 Emacs, che può ricevere input da tastiera e visualizzare testo senza passare attraverso la codifica e la decodifica per il terminale . Il motivo principale per utilizzare un editor in modalità testo è eseguirlo all'interno dello schermo o di tmux su una macchina remota, ma grazie a Tramp, di solito è più facile modificare il file remoto in Emacs locale. Detto questo, puoi fare quello che vuoi finché il tuo emulatore di terminale collabora, come nel caso di Xterm.
Quando si preme un tasto o una combinazione di tasti in un terminale, questo viene trasmesso all'applicazione in esecuzione nel terminale come una sequenza di uno o più caratteri. Ad esempio, quando si preme a, l'applicazione riceve a
. Quando si preme Enter, l'applicazione riceve il carattere CR
(aka ^M
(pronunciato "control-emm"), aka personaggio numero 13, aka \r
o \015
). Le combinazioni di tasti che coinvolgono Altsono in genere trasmesse come carattere ESC
(a.ka. ^[
aka \e
o \033
) seguito dalla sequenza per il tasto o la combinazione di tasti senza Alt. I tasti funzione e altre combinazioni di tasti vengono trasmessi come sequenze di escape che iniziano con \e[
o \eO
.
Le sequenze di escape non sono completamente standardizzate e i terminali in genere ignorano determinati attributi per determinate chiavi. Ad esempio, i modificatori hyper e super sono generalmente ignorati. Puoi vedere cosa invia il tuo terminale per una combinazione di tasti premendo Ctrl+ Vseguito da quella combinazione di tasti nel prompt della shell o C-q
oppure C-h c
seguito dalla combinazione di tasti in Emacs.
Xterm consente di configurare le sequenze di escape per ogni chiave attraverso risorse X . La maggior parte delle configurazioni legge le risorse ~/.Xresources
all'avvio di X e puoi caricare il file manualmente con xrdb -merge ~/.Xresources
.
XTerm.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")
Una convenzione comune utilizza sequenze di escape del modulo ESC [ number1 ; number2 ~
per i tasti funzione con modificatori. number1
indica il tasto funzione ( 15
da 24
per F5a F12- per ragioni storiche, da F1 a F4hanno sequenze di escape diverse) e number2
indica il modificatore ( 2
per Shift, 5
per Ctrl, 3
per Meta, 8
per Ctrl+ Metae aggiungi 1 per + Shift- no, non è molto coerente).
Dovrai specificare i modificatori Hyper e Super tramite il loro numero, come Mod1
attraverso Mod5
. Esegui xmodmap -pm
per visualizzare la mappatura dei tasti palestra ai modificatori. Ad esempio, se Super_L
è associato a Mod5, la seguente riga (utilizzare questo caso esatto) definisce un'associazione per Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacs traduce le sequenze di escape nella sua rappresentazione chiave interna attraverso input-decode-map
olocal-function-key-map
(o function-key-map
prima di Emacs 23).
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
Questo post è realizzato per il 80% in materiale riciclato. Esistono terminali Linux in grado di gestire tutte le combinazioni di tasti?