W przypadku iTerm2, jak sprawić, aby katalog roboczy pojawił się w tytule okna?

22

Niedawno przełączyłem się na iTerm2 z domyślnej aplikacji Terminal i mam problem z użytecznością.

W terminalu katalog roboczy, w którym jesteś, jest wyświetlany na pasku tytułu wraz z procesem i rozmiarem pikseli. Na przykład po kliknięciu okna, aby przełączać się między różnymi sesjami terminala, zobaczysz: katalog_działający - proces - rozmiar_piksela.

W iTerm2 niestety tylko proces pokazuje się w pasku tytułowym. Więc jeśli pracuję w wielu oknach iTerm2 w różnych katalogach, nie mogę łatwo rozróżnić, które to jest, kiedy klikam Okno, aby wybrać jedno. Wiem, że mogę łatwo przełączać się między oknami iTerm2 po wybraniu jednego, ale chciałbym od razu dokładnie określić, które okno chcę. (Nawiasem mówiąc, używam Witch, a tabulacja poleceń też nie pomaga, ponieważ tutaj ponownie tylko proces pojawia się na liście).

Jakieś sugestie? Przejrzałem wszystkie preferencje i nic nie widziałem. Tworzenie profili nie jest dokładnie tym, czego szukam - chciałbym tylko zobaczyć bieżący katalog roboczy w tytułach okien iTerm2.

whiny_nil
źródło

Odpowiedzi:

20

Z \033]0;TEXT\007sekwencją ucieczki.

Przykład użycia w Bash: echo -ne "\033]0;$PWD\007"

Które możesz dodać do swojego, $PROMPT_COMMANDjeśli używasz Bash lub w inny sposób dołączyć do ciebie, PS1aby często był ponownie oceniany.

Przykład: export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'

poważny
źródło
1
To działa. Aby być pedantycznym, dodaj powyższą linię eksportu do pliku ~ / .bashrc.
Spencer,
To jest niesamowite. Dzięki wielkie; pomogło mi to zrozumieć, że odpowiedź naprawdę dotyczy programowania bash i nie ma nic wspólnego z iTerm vs Terminal. Jako kontynuację dla każdego innego, zobacz faqs.org/docs/Linux-mini/Xterm-Title.html#s3 i linfo.org/echo.html . Dzięki jeszcze raz!
whiny_nil
5
i zdobycie tylko ostatniego segmentu ścieżki echo -ne "\033]0;${PWD##*/}\007"(dzięki dzięki github.com/barryclark/bashstrap za wskazanie drogi)
Anentropic
1
@Spencer: Nie ma powodu, aby eksportować zmienną powłoki PROMPT_COMMAND, i generalnie nie należy eksportować zmiennej powłoki, chyba że istnieje szczególna potrzeba współdzielenia zmiennej z każdym programem uruchomionym przez powłokę . Domyślnie zmienne używane przez powłokę nie powinny być eksportowane; eksportuj tylko zmienne, które mają być przekazywane do innych procesów. ~/.bashrcbędą uruchamiane przez każdą interaktywną powłokę, więc nie muszą dziedziczyć zmiennych ustawionych przez ten skrypt.
Chris Page
Cóż, eksportowanie jest sposobem używania PROMPT_COMMAND ... I ogólnie jest to lepsze w przypadku skomplikowanych rzeczy link
demure
2

Podoba mi się ta odpowiedź z tej listy, aby dodać ją do tytułu karty

# put this in your .bash_profile
if [ $ITERM_SESSION_ID ]; then
  export PROMPT_COMMAND='echo -ne "\033];${PWD##*/}\007"; ':"$PROMPT_COMMAND";
fi
AshCooman
źródło
0

Jeśli używasz zsh (który jest domyślny w macOS 10.15), umieść to w swoim ~ / .zshrc:

if [ $ITERM_SESSION_ID ]; then
precmd() {
  echo -ne "\033]0;${PWD##*/}\007"
}
fi

Możesz także przeliterować \033jako \ei \007jako \a.

thakis
źródło