Come fare xterm per inviare il tasto Alt a emacs come Meta?


9

Vedo che questa domanda è stata posta più volte . Le soluzioni fornite non sembrano applicarsi alla mia configurazione. Ecco la mia storia:

Uso Ubuntu 12.0.04 LTS, con xmonad (non su gnome) e uso xterm per il mio lavoro. Preferirei usare xterm piuttosto che un terminale diverso o la propria finestra di emacs. Quando utilizzo emacs -nw, vedo che Alt non viene riconosciuto. Ho verificato usando xev che Alt viene effettivamente generato. Inoltre, se sto usando rxvt, vedo che Alt viene riconosciuto da emacs -nw. Sto usando la modalità malvagia (come utente vim da molto tempo e un newbee emacs), e preferirei davvero non avere il mio rimbalzo della chiave di escape come alt (che era la soluzione fornita in un altro thread). Cosa dovrei fare? (Se aiuta, Alt-x sulla finestra di xterm senza emacs in esecuzione genera "ø" o se corro emacs -nw -Q).


Se non sbaglio, Alt viene invece letto come M.
Braiam,

Non ho capito, intendi M piuttosto che Meta, giusto? Perché dici così?
Rahul

Tasto Emacs Meta. Non puoi premere Mx?
Braiam,

Oh, questo è il mio problema. Mi aspettavo che Alt-x generasse Mx (come avviene in modalità grafica) ma non lo fa su xterm per me. Invece genera (ø)
rahul

Risposte:


13

Come visto in Arch Wiki , devi fare in modo che Xterm invii al programma la chiave di escape corretta:

Se usi il Alttasto per le scorciatoie da tastiera, ti servirà nel tuo file di risorse:

XTerm*metaSendsEscape: true

Quindi, basta fare:

echo 'XTerm*metaSendsEscape: true' >> ~/.Xresources

E riavvia la sessione di Xterm.


Grazie, ha funzionato. Quindi, se Alt invia la fuga ora, in che modo xterm gestisce Escape? (Anche la fuga funziona, chiedo la mia comprensione.)
rahul,

@rahul Non ho detto "Esc" escape, ma il tasto escape è stato premuto "^ M"
Braiam

4
invece di riavviare la sessione puoi anche eseguirexrdb -merge ~/.Xresources
Christian Fritz


1

C'è un'interessante alternativa alla gestione di .Xdefaults/ .Xresourcesfiles fornendo la stringa di risorse direttamente come xtermopzione da riga di comando:

xterm -xrm 'xterm*VT100.metaSendsEscape: true'

Questo è utile, ad esempio, se hai comunque un alias personalizzato x-terminal-emulator.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.