Pour iTerm2, comment faire apparaître le répertoire de travail dans le titre de la fenêtre?

22

Je suis récemment passé à iTerm2 à partir de l'application Terminal par défaut et j'ai un problème d'utilisation.

Sur Terminal, le répertoire de travail dans lequel vous vous trouvez apparaît dans la barre de titre avec le processus et la taille des pixels. Par exemple, lorsque vous cliquez sur Fenêtre pour basculer entre différentes sessions Terminal, vous voyez: répertoire_travail - processus - taille_pixel.

Sur iTerm2, malheureusement, seul le processus apparaît dans la barre de titre. Donc, si je travaille dans plusieurs fenêtres iTerm2 sur différents répertoires, je ne peux pas facilement différencier lequel est lorsque je clique sur Fenêtre pour en choisir un. Je sais que je peux facilement basculer entre les fenêtres iTerm2 une fois que j'en ai sélectionné une, mais je voudrais identifier exactement quelle fenêtre je veux tout de suite. (Soit dit en passant, j'utilise Witch, et la tabulation de commande n'aide pas non plus car ici encore, seul le processus apparaît dans la liste).

Aucune suggestion? J'ai parcouru toutes les préférences et je n'ai rien vu. La création de profils n'est pas exactement ce que je recherche - je voudrais juste voir le répertoire de travail actuel dans les titres des fenêtres iTerm2.

whiny_nil
la source

Réponses:

20

Avec la \033]0;TEXT\007séquence d'échappement.

Exemple d'utilisation dans Bash: echo -ne "\033]0;$PWD\007"

Que vous pourriez ajouter à votre $PROMPT_COMMANDsi vous utilisez Bash, ou autrement vous attacher PS1afin qu'il soit réévalué souvent.

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

sage
la source
1
Cela marche. Juste pour être pédant, ajoutez la ligne d'exportation répertoriée ci-dessus à votre fichier ~ / .bashrc.
Spencer
C'est génial. Merci beaucoup; cela m'a aidé à comprendre que la réponse concerne vraiment la programmation bash et n'a rien à voir avec iTerm vs Terminal. À titre de suivi pour toute autre personne, veuillez consulter faqs.org/docs/Linux-mini/Xterm-Title.html#s3 et linfo.org/echo.html . Merci encore!
whiny_nil
5
et pour obtenir juste le dernier segment du chemin echo -ne "\033]0;${PWD##*/}\007"(avec merci à github.com/barryclark/bashstrap pour avoir montré le chemin)
Anentropic
1
@Spencer: Il n'y a aucune raison d'exporter la variable shell PROMPT_COMMAND, et en général, il ne faut pas exporter une variable shell sauf si vous avez un besoin spécifique de partager la variable avec chaque programme exécuté par le shell . Par défaut, les variables utilisées par le shell ne doivent pas être exportées; exporter uniquement les variables destinées à être transmises à d'autres processus. ~/.bashrcsera exécuté par chaque shell interactif, ils n'ont donc pas besoin d'hériter des variables définies par ce script.
Chris Page
Eh bien, l'exportation est la façon dont vous utilisez PROMPT_COMMAND ... Et c'est généralement mieux pour les choses compliquées lien
sage
2

J'aime cette réponse de cet essentiel pour l'ajouter au titre de l' onglet

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

Si vous utilisez zsh (qui est la valeur par défaut dans macOS 10.15), placez-le à la place dans votre ~ / .zshrc:

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

Vous pouvez également épeler au \033fur \eet à \007mesure \a.

thakis
la source