4

Я установил tmux в системе OS X с zsh, предоставленным oh-my-zsh.

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

Я попытался добавить строки конфигурации, такие как set-window-option -g automatic-rename off и set-option -g allow-rename off в мой ~/.tmux.conf, однако, если я начну новый сеанс tmux, переименуйте окно и cd в другой каталог, tmux снова с радостью переименовывает окно, чтобы соответствовать текущему рабочему каталогу.

Как я могу назвать окна без их автоматического изменения на меня?

2 ответа2

7

У меня была похожая проблема, но с byobu-screen и после некоторых исследований выяснилось, что это функция oh-my-zsh .

Это обсуждалось на странице проблем oh-my-zsh

Короче говоря, мне пришлось раскомментировать DISABLE_AUTO_TITLE="true" в моем файле ~/.zshrc .

В зависимости от версии oh-my-zsh может потребоваться добавить export DISABLE_AUTO_TITLE="true" .

1

Я знаю, что это не отвечает на ваш прямой вопрос, но может помочь вам получить желаемое поведение - и это слишком долго для комментария

ИМХО, вы должны скорее устранить причину, а не пытаться ослабить симптомы ... я имею в виду следующее: где-то в вашей конфигурации оболочки (вероятно, в одном из ваших активированных плагинов oh-my-zsh) заголовок окна получает наборы каждый раз Вы меняете текущий каталог. Скорее всего в функции precmd() или chpwd() . Итак, сначала проверьте вывод

$ which precmd
$ which chpwd

и попробуйте найти источник в ваших файлах zsh rc.

Обходной путь может быть, чтобы переопределить эти функции (с выключенной опцией автоматического переименования tmux и включенной функцией allow-rename ):

$ chpwd() { }
$ precmd() {
    if [[ "$TERM" = "screen" ]] && [[ -n "$TMUX" ]]; then
       print -Pn "\033k%m\033\\"
    fi
  }

Примечания:

  • Я использовал проверку, если вы находитесь в сеансе tmux из этого ответа
  • Заголовок окна изменяется путем печати escape-последовательности каждый раз перед перерисовкой приглашения
  • print -P использует те же расширения, что и в приглашении (см. РАСШИРЕНИЕ ПОСЛЕДОВАТЕЛЬНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ в man zshmisc), поэтому %m расширяется до имени хоста до первой точки.

Убедитесь, что вы вставили этот код в файл ~/.zshrc после загрузки oh-my-zsh.

Последнее, что приходит мне в голову: имя хоста может быть установлено только тем хостом, на котором вы авторизуетесь. Поэтому убедитесь, что конфигурация всех этих машин

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .