Wie kann ich für iTerm2 das Arbeitsverzeichnis im Fenstertitel anzeigen lassen?

22

Ich bin kürzlich von der Standard-Terminal-App zu iTerm2 gewechselt und habe ein Usability-Problem.

Auf dem Terminal wird das Arbeitsverzeichnis, in dem Sie sich befinden, zusammen mit dem Prozess und der Pixelgröße in der Titelleiste angezeigt. Wenn Sie beispielsweise auf Fenster klicken, um zwischen verschiedenen Terminalsitzungen zu wechseln, wird Folgendes angezeigt: Arbeitsverzeichnis - Prozess - Pixelgröße.

Auf iTerm2 wird leider nur der Vorgang in der Titelleiste angezeigt. Wenn ich also in mehreren iTerm2-Fenstern in verschiedenen Verzeichnissen arbeite, kann ich nicht leicht unterscheiden, welches ist, wenn ich auf Fenster klicke, um eines auszuwählen. Ich weiß, dass ich einfach zwischen iTerm2-Fenstern wechseln kann, wenn ich eines ausgewählt habe, aber ich möchte sofort genau bestimmen, welches Fenster ich haben möchte. (Übrigens, ich benutze Witch und Command Tabbing hilft auch nicht, da auch hier nur der Prozess in der Liste auftaucht).

Irgendwelche Vorschläge? Ich habe alle Einstellungen durchgesehen und nichts gesehen. Das Erstellen von Profilen ist nicht genau das, wonach ich suche - ich möchte nur das aktuelle Arbeitsverzeichnis in iTerm2-Fenstertiteln sehen.

whiny_nil
quelle

Antworten:

20

Mit der \033]0;TEXT\007Fluchtsequenz.

Anwendungsbeispiel in Bash: echo -ne "\033]0;$PWD\007"

Was Sie Ihrem hinzufügen können, $PROMPT_COMMANDwenn Sie Bash verwenden oder es auf andere Weise an Sie anhängen, PS1damit es häufig neu bewertet wird.

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

zurückhaltend
quelle
1
Das funktioniert. Um umständlich zu sein, fügen Sie die oben aufgeführte Exportzeile zu Ihrer ~ / .bashrc-Datei hinzu.
Spencer
Das ist fantastisch. Vielen Dank; Dies hat mir geholfen zu verstehen, dass die Antwort wirklich die Bash-Programmierung betrifft und nichts mit iTerm vs Terminal zu tun hat. Weitere Informationen finden Sie unter faqs.org/docs/Linux-mini/Xterm-Title.html#s3 und linfo.org/echo.html . Danke noch einmal!
whiny_nil
5
und um nur das letzte Segment des Pfades zu bekommen echo -ne "\033]0;${PWD##*/}\007"(danke an github.com/barryclark/bashstrap für den
Wegweiser
1
@Spencer: Es gibt keinen Grund, die Shell-Variable PROMPT_COMMAND zu exportieren. Im Allgemeinen sollte eine Shell-Variable nur dann exportiert werden, wenn Sie die Variable für jedes von der Shell ausgeführte Programm freigeben müssen . Standardmäßig sollten von der Shell verwendete Variablen nicht exportiert werden. Nur Exportvariablen, die an andere Prozesse übertragen werden sollen. ~/.bashrcwird von jeder interaktiven Shell ausgeführt, sodass sie die von diesem Skript festgelegten Variablen nicht erben müssen.
Chris Seite
Nun, beim Exportieren verwenden Sie PROMPT_COMMAND ... und es ist im Allgemeinen besser, komplizierte Dinge miteinander zu verknüpfen
demure
2

Ich mag diese Antwort aus diesem Kern es um die hinzuzufügen Registerkarte Titel

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

Wenn Sie zsh verwenden (das ist die Standardeinstellung in macOS 10.15), fügen Sie dies stattdessen in Ihre ~ / .zshrc ein:

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

Sie können auch \033als \eund \007als buchstabieren \a.

thakis
quelle