Przypadkowo zepsułem terminal Tmux po wczytaniu cat
pliku binarnego. Teraz mój tmux
jest popsuty. Odłączanie i ponowne dołączanie nie pomaga, podobnie jak przerysowywanie (Cb r). Uruchamianie reset
przerysowuje tylko aktywne okienko, a nie resztę. Uruchamianie ssty sane
wewnątrz lub na zewnątrz tmux
też nie pomaga.
W każdym okienku mam normalną informację zwrotną z tego, co wpisuję (pierwsze wywołanie reset
natychmiast po pomyleniu terminala rozwiązało to), ale nie mogę naprawić paska stanu.
W gnome-terminal
każdej aktualizacji paska stanu prowadzi do wzrostu paska stanu (patrz zrzut ekranu powyżej). Dzieje się tak na przykład podczas uruchamiania nowej aplikacji, przełączania paneli lub zmiany rozmiaru okienka. Wymuszenie przerysowania (przez C-b r
, uruchomienie reset
lub za pomocą menu terminala gnome) powoduje skrócenie paska stanu do pojedynczej linii, ale pozostaje uszkodzony.
W xterm
, pasek stanu pozostaje w obrębie jednej linii, ale pozostaje uszkodzony jak na zdjęciu.
Używam Tmux 1.5.
- Jak naprawić mój
tmux
terminal?
Ten raport o błędach z 2008 roku wydaje się opisywać ten sam problem, ale został oznaczony jako naprawiony. Nie wiem w jakiej wersji został naprawiony, ale tmux 1.5 powinien zawierać poprawkę z 2008 roku.
Control
+b
+,:
a następnieset -g status-right "#H"
ustawić prawo do statusu nazwy hosta.Odpowiedzi:
Spróbuj zmienić nazwę okna 4
(To przecinek na środku)
Lub: Control+b
:rename-window myNewname
źródło
ctrl+u
zrobić, więc pełna sekwencja toctrl+b , ctrl+u newname
byobu
również dla (f8, <newname>
)Control-u
potrzebny?Control-,
już zmienia nazwę, prawda? Chociaż mogę potwierdzić, że w moim przypadku był on potrzebny, czy jest to jakiś rodzaj resetowania?Potrzebujesz dwóch sekwencji poleceń, aby uporządkować bałagan:
Najpierw uruchom to w zniekształconym oknie (działa nawet, gdy jesteś w
ssh
):stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Następnie uruchom to na komputerze, który działa
tmux
(działa wewnątrz i na zewnątrztmux
):tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Wyjaśnione szczegółowo
Zostało to zebrane, aby rozwiązać wszystkie bity znalezione w innych odpowiedziach i komentarzach. Wydaje się, że przy drugim poleceniu pozostało już niewiele. (Zobacz w „brakującym bicie” poniżej).
Aby zrozumieć, jak to działa, najpierw zabijmy linię statusu
tmux
itty
. Następnie poprawiamy go ponownie, używając metody, która powinna być zawsze dostępna (w przeciwieństwie do komendyreset
).Jak sprawić, by
tmux
terminal (zakładał sięUTF-8
) bezużytecznyWyjaśniono:
stty -echo
zabija odpowiedź typu terminalaprintf '\016'
robi aSO
, więc jesteś w alternatywnym zestawie znakówprintf '\033]2;%s\007' 'right status text'
ustawia odpowiedni status, w tym przypadku$'\355
”, co odsłania błąd prezentacjiprintf '\033k%2000s\033\\' $'\302\217'
ustawia nazwę tytułu oknaMoże to być kombinacja widoczna na terminalu po awarii jakiegoś interaktywnego polecenia i wrzuceniu go z powrotem do powłoki. (Nie
/bin/cat
możesz prowokowaćstty -echo
IMHO, ale takie polecenia jakvim
zwykle to ustawiają).Teraz posprzątaj ten bałagan
Wyjaśniono:
stty sane
ustawia „rozsądne” parametry terminala, dzięki czemu odzyskujesz echo podczas pisaniaprintf '\033k%s\033\\' "$(basename "$SHELL")"
przywraca normalny tytuł okna. Możesz użyćtmux rename-window "$(basename "$SHELL")"
alternatywnie, jednaktmux rename-window
jest ograniczony do tego,tmux
gdzie zawsze działa sekwencja ucieczki.printf '\033]2;%s\007' "$(uname -n)"
resetuje prawo do statusu, aby było wyświetlane jako domyślne. (Pamiętaj, że nie powinieneś używaćtmux set status-right "something"
, ponieważ po prostu wyświetla to,pane title
co uległo uszkodzeniu, więcstatus-right
po prostu ujawnia jakiś błąd prezentacji. Pamiętaj również, że nie znalazłemtmux
polecenia, aby bezpośrednio ustawić tytuł panelu).tput reset
resetuje terminal, na wypadek gdyby zostało to pomieszanetmux refresh
odświeża ekran, aby pozbyć się innych zanieczyszczeń, które mogły się pojawićBrakujący kawałek
printf '\033k%s\033\\' "$(basename "$SHELL")"
Traci standardową zdolnośćtmux
do zaprezentowania aktualnego polecenia w lewym obszarze stanu. Poprintf '\033k%s\033\\' "something"
egzekucji umiejętność ta została utracona, a ja nie znalazłem jeszcze dobrego sposobu, aby ją przywrócić, tak jak wcześniej.Ale, jak zauważono w komentarzach poniżej, możesz aktywować podobną funkcję
tmux
jako zamiennik z następującymtmux
ustawieniem:Zrób to w
tmux
wierszu poleceń, do którego można dotrzeć w bieżącym oknie za pomocą „Escape”:
(gdzie „Escape” jesttmux
klawiszem polecenia), a następnie wprowadź polecenie.Lub wycinaj
tmux set-window-option automatic-rename on
w swoim obecnym terminalu, ale to się nie udaje, jeśli nie jesteś bezpośrednio na odpowiednim poziomie powłoki, na przykład, nie działa on wsudo
lubssh
.Lub otwórz inne okno w bieżącej
tmux
sesji i wykonaj następujące polecenie:Lub otwórz kolejną powłokę na uruchomionym komputerze
tmux
i wykonaj następujące polecenie (to jest poza tmux):PS: Dziękujemy wszystkim, którzy pomogli w złożeniu tego rozwiązania.
źródło
uname -n
zamiasthostname -s
.hostname
jest niebezpieczny wroot
kontekście, ponieważ możesz zmienić nazwę swojego hosta-s
na starszy Linux / Unix, gdziehostname
nie ma opcji grok.stty sane
część pomogła mi, gdy mój terminal był zepsuty i niczego nie pokazywał. Dziękuję Ci!set-window-option automatic-rename
.Konkretny problem, jaki widzisz, wiąże się z nazwą / tytułem okna 4. Kombinacja bycia zbyt długim (oczywiście) i zawierającym dziwne znaki, które powodują, że tmux mierzy go jako krótszy (więc nie odpowiednio ogranicza pasek stanu do szerokości ekranu) Nie jestem pewien, jak to zresetować (w moim przypadku śledzi nazwę procesu na pierwszym planie), być może będziesz musiał zamknąć okno.
źródło
^b - ,
Ctrl
-b
wtedy,
.Backspace
przez minutę, aby wyczyścić obecną nazwę. Dla mnie wizualna informacja zwrotna ostatecznie wyjaśniła, że cała stara nazwa została usunięta.Ctrl-b
:
okna zmiany nazwy <nazwa idzie tutaj>; używa to systemu poleceń tmux zamiast skrótu klawiaturowego dla tego polecenia.po prostu zrób to
$ reset && tmux rename-window <new_window_name>
źródło
naprawiłem to, gdy coś innego niż nazwa okna było uszkodzone i nie mogłem się martwić, aby dowiedzieć się, co to było.
źródło
tmux
może stanowić tylko część problemu. Może być konieczne wywołaniestty sane
z wiersza poleceń. Spowoduje to zresetowanie sterowników TTY w jądrze na pewien zestaw wartości domyślnych, które zwykle pozwalają kontynuować. Jeśli sterowniki TTY są wystarczająco pomieszane, być może trzeba wpisaćstty sane
„ślepy”, to znaczy bez informacji zwrotnej na ekranie.źródło
stty sane
też nie rozwiązuje problemu. Mam informacje zwrotne na ekranie, w obrębie każdegotmux
panelu mogę pisać i mam opinię jak zwykle, ale jak tylko Tmux będzie musiał coś narysować (np. Uruchomienie nowej aplikacji, przełączanie lub zmiana rozmiaru paneli), pasek stanu przesuwa się do paneli ...Spróbuj ponownie załadować plik konfiguracyjny?
Ctrlb, następnie:
:source-file ~/.tmux.conf
źródło
naprawić problem dla mnie:
Właśnie zabiłem okienko i okno problemów i utworzyłem nowe okno i okienko.
W okienku wydania CTRL+ AXi CTRL+ AC.
źródło