Sie werden sich in einem X11 Emacs wohler fühlen, der Tastatureingaben empfangen und Text anzeigen kann, ohne das Terminal zu codieren und zu decodieren . Der Hauptgrund für die Verwendung eines Textmodus-Editors besteht darin, ihn in screen oder tmux auf einem Remote-Computer auszuführen. Dank Tramp ist es jedoch in der Regel einfacher, die Remote-Datei in Ihrem lokalen Emacs zu bearbeiten. Abgesehen davon können Sie tun, was Sie wollen, solange Ihr Terminal-Emulator zusammenarbeitet, was bei Xterm der Fall ist.
Wenn Sie eine Taste oder Tastenkombination in einem Terminal drücken, wird diese als Folge von einem oder mehreren Zeichen an die im Terminal ausgeführte Anwendung übertragen. Wenn Sie beispielsweise drücken a, empfängt die Anwendung a
. Wenn Sie auf drücken Enter, erhält die Anwendung das Zeichen CR
(aka ^M
(ausgesprochen „control-emm“), aka Zeichen Nummer 13, aka \r
oder \015
). Tastenkombinationen mit Altwerden normalerweise als Zeichen ESC
(a.ka. ^[
aka \e
oder \033
) übertragen, gefolgt von der Sequenz für die Taste oder Tastenkombination ohne Alt. Funktionstasten und andere Tastenkombinationen werden als Escape-Sequenzen beginnend mit \e[
oder übertragen \eO
.
Die Escape-Sequenzen sind nicht vollständig standardisiert, und Terminals ignorieren normalerweise bestimmte Attribute für bestimmte Schlüssel. Beispielsweise werden die Modifikatoren hyper und super normalerweise ignoriert. Sie können sehen, was Ihr Terminal für eine Tastenkombination sendet, indem Sie Ctrl+ Vgefolgt von dieser Tastenkombination in einer Shell-Eingabeaufforderung C-q
oder C-h c
gefolgt von der Tastenkombination in Emacs drücken.
Mit Xterm können Sie die Escape-Sequenzen für jeden Schlüssel über X-Ressourcen konfigurieren . Die meisten Setups lesen Ressourcen ab dem ~/.Xresources
Zeitpunkt, an dem X gestartet wird, und Sie können die Datei manuell mit laden 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~")
Eine übliche Konvention verwendet Escape-Sequenzen der Form ESC [ number1 ; number2 ~
für Funktionstasten mit Modifikatoren. number1
gibt die Funktionstaste an ( 15
bis 24
für F5bis F12- aus historischen Gründen haben F1 bis F4unterschiedliche Escape-Sequenzen) und number2
gibt den Modifikator an ( 2
für Shift, 5
für Ctrl, 3
für Meta, 8
für Ctrl+ Metaund addiere 1 für + Shift- nein, es ist nicht sehr konsistent).
Sie müssen die Hyper- und Super-Modifikatoren durch ihre Nummer wie Mod1
durch angeben Mod5
. Führen xmodmap -pm
Sie den Befehl aus, um die Zuordnung von Keysyms zu Modifikatoren anzuzeigen. Wenn zum Beispiel Super_L
an Mod5 gebunden ist, definiert die folgende Zeile (genau in diesem Fall) eine Bindung für Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacs übersetzt Escape-Sequenzen durch input-decode-map
oderlocal-function-key-map
(oder function-key-map
vor Emacs 23) in ihre interne Tastendarstellung.
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
Dieser Pfosten besteht zu 80% aus recyceltem Material von Gibt es Linux-Terminals, die alle Tastenkombinationen verarbeiten können?