Frage Linke Pfeiltaste funktioniert nicht in Tmux Bash


Problem

Wenn ich in tmux in bash bin, kann ich die linke Pfeiltaste (auf meiner Tastatur) nicht verwenden, um den Cursor über den Text, den ich eingegeben habe, zu bewegen. Es erscheinen keine anderen Zeichen, der Cursor bewegt sich nicht, nichts passiert.

Einzelheiten

Wenn ich vim eingebe, funktioniert der linke Pfeil für die Navigation. Es scheint also kein allgemeines Problem innerhalb von tmux zu sein, sondern nur etwas, das in der Bash-Befehlszeile auftaucht. Die Pfeile nach oben und nach unten funktionieren in der MTU in bash. Der linke Pfeil funktioniert auch normal in bash außerhalb von tmux. Wenn ich in tmux in bash bin, wird durch Drücken von Shift Left der Cursor nach links bewegt.

Grundeinstellung

Von PuTTY in Windows ssh'ing ich zu einer Fedora 24 Box. Dann starte ich tmux.


Umgebung

Putty-Konfiguration

Terminal -> Keyboard -> keypad: ESC[n~
Terminal -> Features -> nothing checked
Connection -> Data -> term type string: putty-256color

Schale

Außerhalb tmux:

$ echo $0
-bash
$ help
GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)

Innerhalb von tmux:

$ echo $0
-bash
$ help
GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)

Bash-Variablen

Außerhalb von tmux:

$ echo $TERM
putty-256color

Innerhalb von tmux:

$ echo $TERM
screen-256color

Ich habe auch versucht, andere Werte zu setzen $TERM innerhalb tmux, wie screen.putty-256color was ich gefunden habe mit ls -1 /usr/share/terminfo/s/screen* - schien keinen Unterschied zu machen.

Dump der bash Option Einstellungen, die innerhalb oder außerhalb von tmux gleich sind:

$ shopt -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       on
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

Ich habe keine persönliche .inputrc, aber ich sehe, dass emacs oben ist, und / etc / inputrc hat diesen Abschnitt:

$if mode=emacs

# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# commented out keymappings for pgup/pgdown to reach begin/end of history
#"\e[5~": beginning-of-history
#"\e[6~": end-of-history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word

# for rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word

# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif

Anmerkungen

Ich denke, das hat vor einer Woche funktioniert. Unterschiede seit damals habe ich mir gedacht:

  • Ich hatte eine andere PuTTY-Konfiguration (ich kann versuchen, das wiederherzustellen, es ist nicht leicht zugänglich)
  • Ich habe Solarized-Farben für Vim installiert und auch ihre PuTTY-Farben getestet. Ich habe mir noch einmal die $ TERM-Auswahl angesehen, als ich das gemacht habe, aber ich glaube nicht, dass ich wesentliche Änderungen vorgenommen habe, die ich noch nicht rückgängig gemacht habe.
  • Kernel-Header wurden aktualisiert, Glibc wurde aktualisiert.

Fehlerbehebung

Installation von zsh und Einstellung set-option -g default-shell /bin/zsh im ~/.tmux.conf hat das Problem nicht gelöst.

suWenn Sie root starten und tmux von root starten, wurde das Problem nicht gelöst.


1
2018-06-27 23:33


Ursprung




Antworten:


Ich habe das Problem heute Morgen gelöst, also poste ich diese Antwort mit meinem Fix:

Fix

Ändern Sie die PuTTY-Konfiguration Connection -> Data -> Terminal-type string zu xterm-256color.


Erläuterung

Nun, hier ist der Unterschied zwischen den terminfo Werten für kLFT, die man terminfo sagt, ist die nach links verschobene Pfeiltaste:

$ infocmp xterm-256color putty-256color | grep '\\E\[D'
kLFT: '\E[1;2D', '\E[D'

Ich denke, Bash versteht \E[D als den Befehl, den Cursor nach links zu bewegen, macht es Sinn, dass der Pfeil nach links verschoben wurde, um den Cursor nach links zu bewegen. Aber dafür gibt es keinen anderen Eintrag \E[D, und

$ infocmp xterm-256color | grep '\\E\[D'

findet nichts, es scheint also nicht, dass xterm-256color etwas anderes daran gebunden hat, und kLFT ist die einzige Übereinstimmung in putty-256color. man terminfo sagt

Die Codes, die durch den Linkspfeil, den Rechtspfeil, den Aufwärtspfeil, den Abwärtspfeil und die Home-Tasten gesendet werden, können als kcub1, kcuf1, kcuu1, kcud1 bzw. khome angegeben werden.

Und an anderer Stelle listet kcub1 als Linkspfeil auf, also sollte ich nach kcub1 suchen:

$ infocmp xterm-256color | grep kcub1
kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,

$ infocmp putty-256color | grep kcub1
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,

Aber es ist auf den gleichen Wert eingestellt, \EOD, sowohl.

In screen-256color ist der Wert für kcub1 derselbe und kLFT ist nicht gesetzt.

Darüber hinaus habe ich nicht viele Erklärungen - wenn das alles summiert und Sinn macht, bitte posten Sie eine Antwort.

Hinweis: Ich dachte, dass dies vor einer Woche mit putty-256color funktionierte, aber ich erinnere mich daran, einige $ TERM-Auswahlen geändert zu haben, als ich Solarized installierte, also vermute ich, dass ich es zu dieser Zeit in Putty-256color geändert habe und es vergessen habe.


3
2018-06-28 14:11