Пользовательская подсказка Tmux и ZSH: ошибка с именем окна
Я настроил мое приглашение ZSH с помощью oh-my-zsh, чтобы сделать его более читабельным и добавить информацию о git, если я нахожусь в репозитории.
Пример:bob@inf [~/docs] %bob@inf [~/src/nicest] master % (в репозитории git)
Это хорошо работает, но у меня есть некоторые ошибки с tmux и имя окна. Он по-прежнему отображает бессмысленное значение, и я не могу отключить его с помощью automatic-rename off (это просто не работает, имя окна меняется после каждой команды), для первого примера использования tmux ~/docs для названия окна.
Я не уверен, как я могу это исправить, я хотел бы сохранить мой zsh подсказку, как есть, если можно внести изменения, но хотел бы понять, в чем проблема?
Другим решением может быть переопределение команды settile (из этого ответа), но я не уверен, как сделать это правильно.
4 ответа
Я взглянул на о-о-о-зш и нашел вероятного подозреваемого.
Когда значение переменной среды TERM начинается с screen (что должно быть и под screen, и через tmux), он использует управляющую последовательность экранного терминала для установки имени окна в
- (непосредственно перед отображением приглашения оболочки)
самая левая часть "сжатого тильды" пути текущего рабочего каталога (..затем следуют последние 13 символов или весь путь, если оно меньше 15 символов) и - (непосредственно перед началом команды)
первое "слово" команды "о запуске" (не считаяssh,sudoи несколько других).
Похоже, это работает для вас (вы сказали, что ваше имя окна изменилось на ~/docs когда вы были в этом каталоге). Если вы хотите отключить это автоматическое переименование, вы можете полностью отключить его, установив для параметра оболочки DISABLE_AUTO_TITLE значение true в вашем .zshrc:
DISABLE_AUTO_TITLE=true
Если вы просто установите это в интерактивной оболочке, вы получите пустую строку для имени текущего окна, но oh-my-zsh перестанет обновлять окно перед каждым приглашением и командой в этом экземпляре оболочки (это должно быть в ваш .zshrc повлиять на все новые экземпляры оболочки).
Я знаю, что ответ выше дает вам решение, но другое - просто добавить эту опцию в ~/.tmux.conf
set-option -g allow-rename off
Я столкнулся с той же проблемой, которая заключается в том, что имя окна tmux было изменено даже при установке в.tmux.conf:
set-window-option -g automatic-rename off
Спасибо Крису за ответ. Имя моего окна tmux не было переименовано автоматически после того, как я изменился:
set -g default-terminal "screen-256color"
чтобы:
set -g default-terminal "xterm-256color"
Если вы хотите отключить автоматическое переименование только для определенного окна, вы можете использовать:
set -t [WINDOW_NUMBER] automatic-rename off
Отключите автоматическое переименование в определенном окне в другом сеансе:
set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off