GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Home/End-Tasten funktionieren nicht in tmux

In tmux 2.0 können Sie einfach diese 2 Zeilen in Ihren .tmux.conf einfügen :

bind -n End send-key C-e
bind -n Home send-key C-a

Das Hauptproblem scheint die Verwendung von xterm-256color für $TERM zu sein. Ich habe $TERM auf screen-256color umgestellt und das Problem ist verschwunden.


Wenn Sie aus irgendeinem Grund bei xterm-256color in tmux bleiben möchten, verwenden Sie die Arch-Lösung mit inputrc. Ich habe es in tmux mit rxvt getestet, ruby ​​irb, python, lua und home/end key sind ok. Wahrscheinlich ist jede Readline-App in Ordnung.

Aus dem Arch-Wiki:

Das Wichtigste zuerst:

Setzen Sie $TERM nicht manuell - lassen Sie das das Terminal machen.

Viele Befehlszeilenanwendungen verwenden die Readline-Bibliothek zum Lesen von Eingaben. Die richtige Konfiguration von Readline kann also in vielen Fällen Home und End beheben.

Die Standarddatei /etc/inputrc enthält keine Zuordnung für die Home-/End-Tasten.

Um zu überprüfen, wie die ausgegebene Escape-Sequenz für diese Tasten lautet:

1. Ctrl + V
2. Home
3. Spacebar
4. Ctrl + V
5. End

dies wird wahrscheinlich ausgeben:$ ^[[1~ ^[[4~ . Sie müssen also eine Zuordnung für diese Sequenzen zu Ihrem inputrc hinzufügen (/etc/inputrc, um global zu sein, oder nur für Ihren Benutzer ~/.inputrc):

"\e[1~": beginning-of-line
"\e[4~": end-of-line

Fügen Sie Folgendes zu Ihrem .tmux.conf hinzu :

bind-key -n Home send Escape "OH"
bind-key -n End send Escape "OF"

Und du bist fertig!

Erklärung

Nachdem ich jede dieser und mehrere andere, die ich beim Lesen anderer Antworten und Dokumentationen gesehen hatte, ausprobiert hatte, funktionierte dies schließlich für mich in jedem Szenario, das ich darauf warf. Ich kann Ihnen nicht dasselbe versprechen, da die Szenarien bei jedem anders sind, aber am Ende habe ich Folgendes herausgefunden.

Dies wurde entdeckt, nachdem derselbe Versuch/Fehler und dieselbe Logik aus einem einigermaßen relevanten Artikel eingeführt wurden, der nicht mehr verfügbar ist. Der Schlüssel ist, wo die Übersetzung stattfindet; in meinem Fall geschieht dies innerhalb meiner .tmux.conf , statt .bashrc oder .zshrc (Hauptsächlich, weil mein Zuhause/Ende außerhalb von tmux gut funktionierte )

Fehlerbehebung

Sie können dieses Problem mit cat -v beheben .

Führen Sie cat -v aus , und drücken Sie dann die Startseite und Ende Schlüssel. Beenden mit Strg +C .

$ cat -v

So sah meine Ausgabe in tmux using zsh aus , zsh , und bash :

tmux

➜  ~ cat -v
^[[1~^[[4~^C

zsh

➜  ~ cat -v
^[[H^[[F

Bash

bash-3.2$ cat -v
^[[H^[[F

Lösung

Vergleichen Sie die obigen Beispiele mit dem, was wir erwarten, indem Sie tput paaren mit cat -v :

$ tput khome | cat -v; echo
^[OH
$ tput kend | cat -v; echo
^[OF

Schlussfolgerung

Denn dieses Problem besteht ausschließlich innerhalb von tmux , und nicht in den Shells selbst, habe ich mich dafür entschieden, die Bindungsänderungen stattdessen in der tmux-Konfiguration vorzunehmen. Durch Verwendung von bind-key gepaart mit send , können wir den Escape verwenden Schlüsselwort gepaart mit der Sequenz, die wir für unsere Übersetzung erreichen möchten. Also:

bind-key -n NAME_OF_KEY send Escape SEQUENCE_GOES_HERE

Dieser Debugging- und Lösungsprozess kann auf alle anderen wichtigen Übersetzungsprobleme angewendet werden. Aber mach dich nicht verrückt. Einige Tasten sind aus einem bestimmten Grund bestimmten Escape-Sequenzen zugeordnet. Beachten Sie, wie bash und zsh erhielt den ^[[H Sequenz für Home statt ^[OH; Es wird wahrscheinlich nicht empfohlen, dies in unserem .zshrc zu überschreiben es sei denn, wir haben in zsh größere Probleme damit .


Linux
  1. Linux Setuid funktioniert nicht?

  2. Linux – Warum funktioniert Setuid nicht?

  3. gpg:Befehl nicht gefunden

  4. Wie funktioniert cat << EOF in Bash?

  5. libevent nicht gefunden Fehler in tmux

tmux Strg+B funktioniert nicht

Tmux-Tastenbelegung funktioniert nicht

Internet funktioniert nicht in Anbox unter Ubuntu 18.04

GNU-Bildschirmanzeige + von Putty

Touchpad funktioniert nicht auf Acer Aspire

Automatische Wiederholung funktioniert nicht