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

Это лучшее решение, так как оно влияет только на 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"

0

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

 set -t [WINDOW_NUMBER] automatic-rename off

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

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.