Wie mache ich xterm, um die Alt-Taste als Meta an Emacs zu senden?

9

Ich sehe, dass diese Frage mehrfach gestellt wurde . Die dort angegebenen Lösungen scheinen nicht auf mein Setup zuzutreffen. Hier ist meine Geschichte:

Ich benutze Ubuntu 12.0.04 LTS mit xmonad (nicht über gnome) und benutze xterm für meine Arbeit. Ich würde lieber xterm als ein anderes Terminal oder ein Emacs-eigenes Fenster verwenden. Bei Verwendung von emacs -nw sehe ich, dass Alt nicht erkannt wird. Ich habe mit xev überprüft, dass Alt tatsächlich generiert wird. Wenn ich rxvt verwende, sehe ich außerdem, dass Alt von emacs -nw erkannt wird. Ich verwende den bösen Modus (als langjähriger Vim-Benutzer und als Emacs-Neuling), und ich würde es wirklich vorziehen, wenn mein Escape-Schlüssel nicht als alt zurückprallt (was die in einem anderen Thread angegebene Lösung war). Was sollte ich tun? (Wenn es hilft, erzeugt Alt-x im xterm-Fenster ohne laufende Emacs "ø" oder wenn ich laufe emacs -nw -Q).

rahul
quelle
Wenn ich mich nicht irre, wird Alt stattdessen als M gelesen.
Braiam
Ich habe es nicht verstanden, du meinst eher M als Meta, oder? Warum sagst du das?
Rahul
Emacs Meta-Schlüssel. Kannst du nicht Mx drücken?
Braiam
Oh, das ist mein Problem. Ich habe erwartet, dass Alt-x Mx generiert (wie im grafischen Modus), aber das tut es auf xterm für mich nicht. Stattdessen erzeugt es (ø)
rahul

Antworten:

13

Wie im Arch-Wiki zu sehen , müssen Sie Xterm erstellen, um den richtigen Escape-Schlüssel an das Programm zu senden:

Wenn Sie die AltTaste für Tastaturkürzel verwenden, benötigen Sie diese in Ihrer Ressourcendatei:

XTerm*metaSendsEscape: true

Also einfach machen:

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

Und starten Sie Ihre Xterm-Sitzung neu.

Braiam
quelle
Danke, das hat funktioniert. Wenn Alt jetzt Escape sendet, wie geht xterm mit Escape um? (Flucht funktioniert auch, ich
bitte
@rahul Ich sagte nicht "Esc" Flucht, sondern entkam Tastendruck "^ M"
Braiam
4
Anstatt Ihre Sitzung neu zu starten, können Sie auch ausführenxrdb -merge ~/.Xresources
Christian Fritz
2

Wenn das Aktualisieren von ~ / .Xresources für Sie nicht funktioniert, befolgen Sie die Anweisungen in der Dokumentation und aktualisieren Sie es in ~/.Xdefaults

http://frequal.com/linux/XTermMetaSendsEscape.html

Adam
quelle
Dies funktionierte bei mir auf Bare-X-Servern, wie bei startx /usr/bin/xterm, wo ~/.Xresourcesignoriert wurde.
Ruslan
1

Es gibt eine interessante Alternative zur Verwaltung Ihrer .Xdefaults/ .XresourcesDateien, indem Sie die Ressourcenzeichenfolge direkt als xtermBefehlszeilenoption bereitstellen :

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

Dies ist beispielsweise praktisch, wenn Sie x-terminal-emulatorohnehin einen benutzerdefinierten Alias haben.

vog
quelle