zsh: установить TERM = screen-256color в tmux, но xterm-256color без tmux

Мне нужно, чтобы мой $TERM был xterm-256color за пределами tmux (в « xterm-256color » терминале с zsh), но screen-256color внутри tmux.

Сначала я попробовал:

  • добавьте export TERM='xterm-256color' в мой ~/.zshrc .
  • добавьте set -g default-terminal "screen-256color" в мой ~/.tmux.conf

Теперь, когда я открываю терминал (скажем, xterm), TERM имеет значение xterm-256color , что является правильным. Но когда я запускаю tmux, TERM снова xterm-256color !

Затем я попытался прокомментировать строку в ~/.zshrc . Теперь, когда я открываю терминал, TERMxterm , и когда я запускаю tmux, TERM имеет screen-256color . Поэтому кажется, что если я устанавливаю TERM в .zshrc , tmux сначала устанавливает TERM на screen-256color , запускает оболочку (которая является zsh), а zsh читает .zshrc и сбрасывает TERM на xterm-256color .

Итак, как заставить TERM быть xterm-256color в «обычном» терминале и screen-256color в tmux?

  • Избегание временных файлов в zsh
  • Автоматизация cd в каталог архива в ~ / .avfs
  • автозаполненные названные каталоги
  • zsh-completion: Завершение двух частей аргумента, разделенных двоеточием
  • Команда ведет себя по-разному при сохранении в файле * .sh
  • Как перенаправить stdout справа налево
  • В чем ключевое различие между конфигурацией grml zsh и конфигурацией oh-my-zsh
  • Трубопроводы, рабочие места и процессы в Zsh
  • 2 Solutions collect form web for “zsh: установить TERM = screen-256color в tmux, но xterm-256color без tmux”

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

    Zsh не является терминалом. Это оболочка. Возможно, вам будет интересно, к чему настроен ваш TERM, если он хочет делать что-то особенное, но он не должен отвечать за его настройку . Вместо этого он отвечает за установку переменных, таких как ZSH_VERSION, которые могут использоваться скриптами или другими дочерними процессами, чтобы понять, какое поведение ожидать от их родительской оболочки.

    Вместо этого вам нужно проверить конфигурацию для любого используемого приложения терминала и попросить его сообщить о себе должным образом. Например, вы можете сделать это для xterm, добавив эту строку в файл ~/.Xdefaults который он использует для значений конфигурации:

     xterm*termName: xterm-256color 

    Кажется, gnome-terminal делает идиотскую вещь, читая, какова будет ваша xterm-конфигурация, а не ее собственная. В некоторых случаях это может привести к вам, но лучше установить gnome-256color. Похоже, что это довольно долгое время (и некоторые другие эмуляторы терминала на базе VTE). Обычный способ взломать это – использовать другое значение, которое он устанавливает:

     if [ "$COLORTERM" = "gnome-terminal" ]; then export TERM=gnome-256color fi 

    Но это возвращает вас к вашей проблеме с помощью tmux, поэтому вам придется учитывать это, не перезагружая TERM, если это уже что-то вроде «screen-256color» или «screen»:

     if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then export TERM=gnome-256color fi 

    Для других терминалов вам нужно будет найти соответствующие процедуры настройки.

    Внутри вашего .zshrc, поставьте

     [[ $TMUX = "" ]] && export TERM="xterm-256color" 

    И внутри вашего .tmux.conf

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

    Проверьте, имеются ли все строки файла в другом файле

    Как запустить команду на переднем плане, а затем отправить на задний план

    Mint Linux 13 не загружается в заставку экрана после включения графического драйвера в hp dx2450:

    One-liner для выполнения процесса в текущем каталоге без вывода и отменить его?

    Регулярное выражение для поиска двойных символов в Bash

    Как использовать настоящий PCI-модем в виртуальной машине?

    Может ли dpkg или apt быть установлен на Arch Linux?

    Несколько профилей запуска X

    получить корневое устройство?

    История команд и каталогов, в которых мы находились

    Проблема с HDD spindown

    CentOs 5.3, обновление Yum не работает

    Jumphost неожиданно перезапустил первые попытки соединения SSH MUX

    TTY заливается кнопкой, которая не существует, удерживается нажатой

    Должен ли я отключить учетную запись root на моем компьютере Debian для обеспечения безопасности?

    Linux и Unix - лучшая ОС в мире.