Пользовательская подсказка Tmux и ZSH: ошибка с именем окна

43

Я настроил мое приглашение ZSH с помощью oh-my-zsh, чтобы сделать его более читабельным и добавить информацию о git, если я нахожусь в репозитории.

Пример:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(в репозитории git)

Это работает хорошо, но у меня есть некоторые ошибки tmuxи имя окна. Он по-прежнему отображает бессмысленное значение, и я не могу его отключить automatic-rename off(он просто не работает, имя окна меняется после каждой команды), для первого примера использования tmux ~/docsдля имени окна.

Я не уверен, как я могу это исправить, я хотел бы сохранить мой zsh подсказку, как есть, если можно внести изменения, но хотел бы понять, в чем проблема?

Другим решением может быть переопределение команды settile(из этого ответа ), но я не уверен, как это сделать правильно.

Адриен Кокио
источник

Ответы:

76

Я взглянул на о-о-о-зш и нашел вероятного подозреваемого .

Когда значение переменной окружения TERM начинается с screen(что должно быть и в screen, и в tmux ), оно использует управляющую последовательность экранного терминала для установки имени окна в

  • (непосредственно перед отображением приглашения оболочки) крайняя
    левая часть «сжатого тильды» пути текущего рабочего каталога ( ..за которым следуют последние 13 символов или весь путь, если он меньше 15 символов), и
  • (непосредственно перед запуском команды)
    первый «слово» около-к-быть-запуска команды (не считая ssh, sudoи некоторые другие).

Похоже, это работает для вас (вы сказали, что имя вашего окна изменилось, ~/docsкогда вы были в этом каталоге). Если вы хотите отключить это автоматическое переименование, вы можете полностью отключить его, установив параметр оболочки DISABLE_AUTO_TITLE trueв вашем .zshrc:

DISABLE_AUTO_TITLE=true

Если вы просто установите это в интерактивной оболочке, вы получите пустую строку для имени текущего окна, но oh-my-zsh перестанет обновлять окно перед каждым приглашением и командой в этом экземпляре оболочки (это должно быть в Вы .zshrcможете повлиять на все новые экземпляры оболочки).

Крис Джонсен
источник
4
Это такой идеальный ответ. Точно, информативно, сжато и по существу. Более того, он предоставляет решение в дополнение к ответу на первоначальный вопрос («понимание, где проблема»). Только печально, что тот, кто нашел время, чтобы спросить, не удосужился пометить это как ответ.
dmondark
Спасибо, спасибо, спасибо, спасибо, спасибо, спасибо
Джезен Томас
где .zshrcфайл для всех пользователей?
andilabs
29

Я знаю, что ответ выше дает вам решение, но другое - просто добавить эту опцию в ~ / .tmux.conf

set-option -g allow-rename off
albertogg
источник
Это лучшее решение, так как оно влияет только на tmux.
Пол Оливер
Даже с этим параметром, объединяющая панель, за которой следует разделительная панель, сбрасывает имя окна :(
djsadinoff
6

Я столкнулся с той же проблемой, которая заключается в том, что имя окна tmux было изменено даже при установке в .tmux.conf:

set-window-option -g automatic-rename off

Спасибо Крису за ответ. Имя моего окна tmux не было переименовано автоматически после того, как я изменился:

set -g default-terminal "screen-256color"

чтобы:

set -g default-terminal "xterm-256color"
rwxrwxrwx
источник
0

Если вы хотите отключить автоматическое переименование только для определенного окна, вы можете использовать:

 set -t [WINDOW_NUMBER] automatic-rename off

Отключите автоматическое переименование в определенном окне в другом сеансе:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
Виктор Нонов
источник