Per iTerm2, come faccio ad apparire la directory di lavoro nel titolo della finestra?


22

Di recente sono passato a iTerm2 dall'app Terminal predefinita e ho un problema di usabilità.

Su Terminale, la directory di lavoro in cui ti trovi viene visualizzata sulla barra del titolo insieme al processo e alla dimensione dei pixel. Ad esempio, quando fai clic su Window per passare da una sessione all'altra del Terminale, vedrai: directory_di_lavoro - processo - dimensione_ pixel.

Su iTerm2, sfortunatamente, nella barra del titolo viene visualizzato solo il processo. Quindi, se lavoro in più finestre iTerm2 su directory diverse, non riesco facilmente a distinguere quale sia quando clicco su Window per sceglierne una. So che posso facilmente passare da una finestra iTerm2 a un'altra, ma vorrei identificare subito quale finestra desidero. (A proposito, io uso Witch e il comando Tabbing non aiuta neanche perché qui di nuovo solo il processo appare nell'elenco).

Eventuali suggerimenti? Ho esaminato tutte le preferenze e non ho visto nulla. Creare profili non è esattamente quello che sto cercando: mi piacerebbe solo vedere l'attuale directory di lavoro nei titoli delle finestre iTerm2.

Risposte:


20

Con la \033]0;TEXT\007sequenza di escape.

Esempio di utilizzo in Bash: echo -ne "\033]0;$PWD\007"

Che potresti aggiungere al tuo $PROMPT_COMMANDse usi Bash o in caso contrario ti colleghi in PS1modo che venga rivalutato spesso.

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


1
Questo funziona Per essere pedanti, aggiungi la riga di esportazione sopra elencata al tuo file ~ / .bashrc.
Spencer,

Questo e spettacolare. Grazie mille; questo mi ha aiutato a capire che la risposta riguarda davvero la programmazione bash e non ha nulla a che fare con iTerm vs Terminal. Come follow-up per chiunque altro, consultare faqs.org/docs/Linux-mini/Xterm-Title.html#s3 e linfo.org/echo.html . Grazie ancora!
whiny_nil,

5
e per ottenere solo l'ultimo segmento del percorso echo -ne "\033]0;${PWD##*/}\007"(grazie a github.com/barryclark/bashstrap per aver mostrato la strada)
Anentropic

1
@Spencer: non vi è alcun motivo per esportare la variabile di shell PROMPT_COMMAND e in generale non si dovrebbe esportare una variabile di shell a meno che non si abbia una necessità specifica di condividere la variabile con ogni programma eseguito dalla shell . Per impostazione predefinita, le variabili utilizzate dalla shell non devono essere esportate; esporta solo variabili che devono essere trasmesse ad altri processi. ~/.bashrcverrà eseguito da ogni shell interattiva, quindi non è necessario ereditare le variabili impostate da questo script.
Chris Page

Bene, l'esportazione è come usi PROMPT_COMMAND ... Ed è generalmente meglio per cose complicate link
demure

2

Mi piace questa risposta da questa sintesi per aggiungerla al titolo della scheda

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

0

Se stai usando zsh (che è l'impostazione predefinita in macOS 10.15), inseriscilo invece nel tuo ~ / .zshrc:

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

Puoi anche scrivere \033come \ee \007come \a.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.