Для iTerm2, как заставить рабочий каталог появиться в заголовке окна?

22

Недавно я перешел на iTerm2 из стандартного приложения Terminal и столкнулся с проблемой юзабилити.

На терминале рабочий каталог, в котором вы находитесь, отображается в строке заголовка вместе с процессом и размером пикселя. Например, когда вы нажимаете на Window для переключения между различными сеансами терминала, вы видите: working_directory - process - pixel_size.

На iTerm2, к сожалению, в строке заголовка отображается только процесс. Поэтому, если я работаю в нескольких окнах iTerm2 в разных каталогах, я не могу легко определить, какой из них, когда я нажимаю на Window, выбрать один. Я знаю, что могу легко переключаться между окнами iTerm2 после выбора одного из них, но я бы хотел точно определить, какое окно я хочу сразу. (Между прочим, я использую Witch, и вкладка команд также не помогает, потому что здесь снова только процесс отображается в списке).

Какие-либо предложения? Я просмотрел все настройки и ничего не увидел. Создание профилей не совсем то, что мне нужно - я просто хотел бы видеть текущий рабочий каталог в заголовках окон iTerm2.

whiny_nil
источник

Ответы:

20

С \033]0;TEXT\007escape-последовательностью.

Пример использования в Bash: echo -ne "\033]0;$PWD\007"

Что вы можете добавить к своему, $PROMPT_COMMANDесли вы используете Bash, или иным образом прикрепите к себе, PS1чтобы его часто переоценивали.

Пример: export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'

скромный
источник
1
Это работает. Просто чтобы быть педантичным, добавьте указанную выше строку экспорта в файл ~ / .bashrc.
Спенсер
Это круто. Спасибо; это помогло мне понять, что ответ на самом деле касается программирования на bash и не имеет ничего общего с iTerm vs Terminal. В качестве продолжения, пожалуйста, посетите faqs.org/docs/Linux-mini/Xterm-Title.html#s3 и linfo.org/echo.html . Еще раз спасибо!
whiny_nil
5
и получить только последний отрезок пути echo -ne "\033]0;${PWD##*/}\007"(благодаря github.com/barryclark/bashstrap за указание пути)
Anentropic
1
@Spencer: Нет причины экспортировать переменную оболочки PROMPT_COMMAND, и в общем случае не следует экспортировать переменную оболочки, если у вас нет особой необходимости предоставлять общий доступ к переменной для каждой программы, запускаемой оболочкой . По умолчанию переменные, используемые оболочкой, не должны экспортироваться; только экспортные переменные, которые предназначены для передачи другим процессам. ~/.bashrcбудет выполняться каждой интерактивной оболочкой, поэтому им не нужно наследовать переменные, установленные этим сценарием.
Крис Пейдж
Ну, экспорт, как вы используете PROMPT_COMMAND ... И это , как правило , лучше для сложных вещей ссылка
тихоня
2

Мне нравится этот ответ из этой сути, чтобы добавить его в заголовок вкладки

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

Если вы используете zsh (по умолчанию в macOS 10.15), поместите его в ~ / .zshrc:

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

Вы также можете записать \033как \eи \007как \a.

thakis
источник