Ich habe versehentlich mein tmux-Terminal versaut, nachdem ich cat
eine Binärdatei erstellt habe. Jetzt ist meine tmux
durcheinander. Das Lösen und erneute Anfügen hilft weder, noch wird ein Neuzeichnen (Cbr) durchgeführt. Beim Ausführen wird reset
nur der aktive Bereich neu gezeichnet, nicht der Rest. Laufen ssty sane
entweder drinnen oder draußen tmux
hilft auch nicht.
In jedem Fenster habe ich normales Feedback von dem, was ich eingebe (der erste Anruf von reset
unmittelbar nach dem Versagen des Terminals hat dies behoben), aber ich kann die Statusleiste scheinbar nicht reparieren.
In gnome-terminal
führt jede Aktualisierung der Statusleiste dazu, dass die Statusleiste wächst (siehe Abbildung oben). Dies passiert beispielsweise, wenn ich eine neue Anwendung ausführe, wenn ich zwischen Fenstern wechsle oder wenn ich die Größe eines Fensters ändere. Durch das Erzwingen eines Neuzeichnens (von C-b r
, durch Ausführen reset
oder über das Gnome-Terminal-Menü) wird die Statusleiste auf eine einzelne Zeile verkleinert, bleibt jedoch beschädigt.
In xterm
bleibt die Statusleiste innerhalb einer Zeile, bleibt aber wie abgebildet beschädigt.
Ich benutze tmux 1.5.
- Wie repariere ich mein
tmux
-terminal?
Dieser Fehlerbericht aus dem Jahr 2008 scheint dasselbe Problem zu beschreiben, wurde jedoch als behoben markiert. Ich weiß nicht, in welcher Version es behoben wurde, aber tmux 1.5 sollte einen Fix von 2008 enthalten.
Control
+b
+:
und dannset -g status-right "#H"
das Statusrecht auf den Hostnamen zu setzen.Antworten:
Versuchen Sie, Fenster 4 umzubenennen
(Das ist ein Komma in der Mitte)
Oder: Control+b
:rename-window myNewname
quelle
ctrl+u
, die vollständige Sequenz ist alsoctrl+b , ctrl+u newname
byobu
auch (f8, <newname>
)Control-u
nötig?Control-,
heißt schon richtig umbenennen? Obwohl ich bestätigen kann, dass es in meinem Fall benötigt wurde, handelt es sich um eine Art Reset-Zeichen?Sie benötigen zwei Befehlssequenzen, um das Chaos zu beseitigen:
Führen Sie dies zunächst im verstümmelten Fenster aus (dies funktioniert auch, wenn Sie sich in befinden
ssh
):stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Führen Sie dies dann auf dem Computer aus, der ausgeführt wird
tmux
(es funktioniert innerhalb und außerhalb vontmux
):tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Im Detail erklärt
Dies wurde zusammengestellt, um alle Bits zu adressieren, die in anderen Antworten und Kommentaren gefunden wurden. Derzeit scheint nur noch ein kleines bisschen mit dem zweiten Befehl übrig zu sein. (Siehe im "fehlenden Bit" unten).
Um zu verstehen, wie dies funktioniert, töten wir zuerst die Statuszeile von
tmux
undtty
. Danach korrigieren wir es erneut mit einer Methode, die immer verfügbar sein sollte (im Gegensatz zum Befehlreset
).Wie man ein
tmux
TerminalUTF-8
unbrauchbar machtErklärt:
stty -echo
bricht die Terminal-Antwort abprintf '\016'
Tut einSO
, so dass Sie auf dem alternativen Zeichensatz sindprintf '\033]2;%s\007' 'right status text'
setzt den richtigen Status, in diesem Fall$'\355
', der einen Präsentationsfehler aufdecktprintf '\033k%2000s\033\\' $'\302\217'
Legt den Fenstertitelnamen festDies ist möglicherweise die Kombination, die auf dem Terminal angezeigt wird, nachdem ein interaktiver Befehl abgestürzt ist und wieder in der Shell abgelegt wurde. (Mit können
/bin/cat
Siestty -echo
IMHO nicht provozieren , aber interaktive Befehle wievim
gewohnt setzen dies.)Räumen Sie jetzt dieses Durcheinander auf
Erklärt:
stty sane
Setzt "vernünftige" Terminalparameter, damit Sie beim Tippen Ihr Echo zurückbekommenprintf '\033k%s\033\\' "$(basename "$SHELL")"
Setzt den Fenstertitel auf Normal zurück. Sie könnentmux rename-window "$(basename "$SHELL")"
alternativ verwenden, ist jedoch darauftmux rename-window
beschränkt,tmux
wo die Escape-Sequenz immer funktioniert.printf '\033]2;%s\007' "$(uname -n)"
Setzt das Status-Recht zurück, um als Standard angezeigt zu werden. (Beachten Sie, dass Sie diese Option nicht verwenden solltentmux set status-right "something"
, da sie nur die beschädigten ausgibtpane title
, sodassstatus-right
nur ein Präsentationsfehler auftritt. Beachten Sie auch, dass ich keinentmux
Befehl zum direkten Festlegen des Fenstertitels gefunden habe.)tput reset
Setzt das Terminal zurück, falls dies durcheinander gebracht wurdetmux refresh
Aktualisiert den Bildschirm, um andere möglicherweise aufgetauchte Fremdkörper zu entfernenFehlendes bisschen
Das
printf '\033k%s\033\\' "$(basename "$SHELL")"
verliert die Standardfähigkeittmux
, den aktuellen Befehl im linken Statusbereich darzustellen. Nachdemprintf '\033k%s\033\\' "something"
diese Fähigkeit ausgeführt wurde, geht sie verloren und ich habe noch keinen guten Weg gefunden, wie ich sie wieder zurückbringen kann.Wie in den Kommentaren unten erwähnt, können Sie eine ähnliche Funktion
tmux
als Ersatz mit der folgendentmux
Einstellung aktivieren :Tun Sie dies entweder in der
tmux
Befehlszeile, die im aktuellen Fenster mit "Escape":
(wobei "Escape" Ihretmux
Befehlstaste ist) erreichbar ist, und geben Sie dann den Befehl ein.Oder
tmux set-window-option automatic-rename on
in Ihrem aktuellen Terminal ausführen , aber dies schlägt fehl, wenn Sie nicht direkt auf der richtigen Shell-Ebene sind, z. B. funktioniert es nicht insudo
oderssh
.Oder öffnen Sie ein anderes Fenster in der aktuellen
tmux
Sitzung und führen Sie den folgenden Befehl aus:Oder öffnen Sie eine andere Shell für den Computer, der ausgeführt wird,
tmux
und führen Sie den folgenden Befehl aus (außerhalb von tmux):PS: Vielen Dank an alle, die diese Lösung mit aufgebaut haben.
quelle
uname -n
statthostname -s
. Dieshostname
ist imroot
Kontext gefährlich , da Ihr Host-s
unter älteren Linux- / Unix-hostname
Betriebssystemen möglicherweise umbenannt wird, bei denen die Optionen nicht verfügbar sind.stty sane
Teil hat mir geholfen, als mein Terminal kaputt war und nichts zeigte. Danke!set-window-option automatic-rename
.Das spezifische Problem, das Sie sehen, hat mit dem Namen / Titel von Fenster 4 zu tun. Eine Kombination, die zu lang ist (offensichtlich) und seltsame Zeichen enthält, die dazu führen, dass tmux sie als kürzer bewertet (sodass die Statusleiste nicht richtig eingeschränkt wird) Ich bin mir nicht sicher, wie ich es zurücksetzen soll (auf meinem Bildschirm wird der Name des Vordergrundprozesses angezeigt). Möglicherweise müssen Sie das Fenster schließen.
quelle
^b - ,
Ctrl
-b
dann,
.Backspace
eine Minute lang gedrückt halten, um den aktuellen Namen zu löschen. Durch visuelles Feedback wurde mir schließlich klar, dass der gesamte alte Name gelöscht worden war.Ctrl-b
:
Umbenennungsfenster <name goes here> verwenden. Dabei wird das Befehlssystem tmux anstelle der Tastenkombination für diesen Befehl verwendet.mach das einfach
$ reset && tmux rename-window <new_window_name>
quelle
Dies wurde für mich behoben, als etwas anderes als der Fenstername beschädigt war und ich nicht die Mühe hatte herauszufinden, was es war.
quelle
tmux
könnte nur einen Teil des Problems darstellen. Möglicherweise müssen Siestty sane
an der Befehlszeile aufrufen . Dadurch werden die kernelinternen TTY-Treiber auf einige Standardwerte zurückgesetzt, mit denen Sie normalerweise fortfahren können. Wenn die TTY-Treiber ausreichend durcheinander sind, müssen Sie möglicherweisestty sane
"blind" eingeben, dh ohne Bildschirmrückmeldung.quelle
stty sane
löst das Problem auch nicht. Ich habe zwar Bildschirm-Feedback, innerhalb jedestmux
Bereichs kann ich wie gewohnt Feedback eingeben und haben, aber sobald tmux etwas zeichnen muss (z. B. eine neue Anwendung ausführen, Bereiche wechseln oder die Größe ändern), wird die Statusleiste in die Bereiche verschoben ...Versuchen Sie, Ihre Konfigurationsdatei neu zu laden?
Ctrlb, dann:
:source-file ~/.tmux.conf
quelle
um das Problem für mich zu beheben:
Ich habe gerade das Problemfenster und das Fenster geschlossen und ein neues Fenster und ein neues Fenster erstellt.
Im Ausgabebereich CTRL+ AXund CTRL+ AC.
quelle