Пользовательская подсказка 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