Niestandardowy monit Tmux i ZSH: błąd z nazwą okna

43

Dostosowałem mój monit ZSH oh-my-zsh, aby był bardziej czytelny i dodawał informacje o git, jeśli jestem w repozytorium.

Przykład:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(w repozytorium git)

Działa dobrze, ale mam kilka błędów tmuxi nazwę okna. Nadal wyświetla wartość nie sensowną i nie mogę go wyłączyć za pomocą automatic-rename off(po prostu nie działa, nazwa okna zmienia się po każdym poleceniu), dla pierwszego przykładu użycia tmux ~/docsdla nazwy okna.

Nie jestem pewien, jak to naprawić, chciałbym, aby mój komunikat zsh był w obecnej postaci, czy mogę wprowadzić zmiany, ale chciałbym zrozumieć, gdzie jest problem?

Innym rozwiązaniem może być ponowne zdefiniowanie polecenia settile(z tej odpowiedzi ), ale nie jestem pewien, jak to zrobić we właściwy sposób.

Adrien Coquio
źródło

Odpowiedzi:

76

Rzuciłem okiem na oh-my-zsh i znalazłem podejrzanego .

Gdy wartość zmiennej środowiskowej TERM rozpoczyna się screen(co powinno zarówno pod ekranem i tmux ), używa ekran sekwencję sterowania terminala ustawić nazwę do okna

  • (tuż przed wyświetleniem zachęty powłoki)
    skrajnie lewa część ścieżki „skompresowanej tyldą” bieżącego katalogu roboczego ( ..po której następuje ostatnie 13 znaków lub cała ścieżka, jeśli jest mniejsza niż 15 znaków) oraz
  • (tuż przed uruchomieniem polecenia)
    pierwsze „słowa” dowodzenia o-do-run (nie licząc ssh, sudoi kilka innych).

Wygląda na to, że działa dla ciebie w ten sposób (powiedziałeś, że nazwa twojego okna zmieniła się na, ~/docskiedy byłeś w tym katalogu). Jeśli chcesz wyłączyć automatyczną zmianę nazwy, można go całkowicie może wyłączyć przez ustawienie parametru DISABLE_AUTO_TITLE shell aby truew twojej .zshrc:

DISABLE_AUTO_TITLE=true

Jeśli po prostu ustawisz to w interaktywnej powłoce, skończysz na pustym ciągu dla nazwy bieżącego okna, ale oh-my-zsh przestanie aktualizować okno przed każdym monitem i poleceniem w tej instancji powłoki (musi być w Twój .zshrcwpływać na wszystkie nowe instancje shell).

Chris Johnsen
źródło
4
To jest idealna odpowiedź. Dokładne, informacyjne, zwięzłe i na temat. Co więcej, oprócz odpowiedzi na pierwotne pytanie stanowi rozwiązanie („zrozumienie, gdzie jest problem”). Szkoda tylko, że ktokolwiek poświęcił czas, by zadać pytanie, nie zawracał sobie głowy oznaczeniem tego jako odpowiedzi.
dmondark
Dziękuję dziękuję dziękuję dziękuję dziękuję dziękuję
Jezen Thomas
gdzie jest .zshrcplik dla wszystkich użytkowników?
andilabs
29

Wiem, że powyższa odpowiedź daje rozwiązanie, ale innym jest po prostu dodanie tej opcji do ~ / .tmux.conf

set-option -g allow-rename off
albertogg
źródło
Jest to lepsze rozwiązanie, ponieważ wpływa tylko na tmux.
Paul Oliver,
Nawet przy tym ustawieniu okienko łączenia, a następnie okienko przerwania resetuje nazwę okna :(
djsadinoff,
6

Spotkałem ten sam problem, którym jest nazwa okna tmux została zmieniona nawet przez ustawienie w .tmux.conf:

set-window-option -g automatic-rename off

Dzięki, odpowiedź Chrisa. Nazwa mojego okna tmux nie została automatycznie zmieniona po zmianie:

set -g default-terminal "screen-256color"

do:

set -g default-terminal "xterm-256color"
rwxrwxrwx
źródło
0

Jeśli chcesz wyłączyć automatyczną zmianę nazwy tylko dla niektórych okien, możesz użyć:

 set -t [WINDOW_NUMBER] automatic-rename off

Wyłącz automatyczną zmianę nazwy w określonym oknie w innej sesji:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
Viktor Nonov
źródło