Vim 256 цвет странное поведение с Tmux

Просто небольшая интересная проблема, с которой я столкнулся в терминалах. Я использую vim внутри gnome-терминала. Мне нравится иметь 256 цветов, поэтому мне не нужно использовать gVIM.

Мои соответствующие настройки.zshrc:

export TERM=xterm-256color

Мои соответствующие настройки.vimrc:

if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif

Из этого показа вы заметите, в чем проблема: http://showterm.io/06460aeb043cac4bd0256

Я получаю странный цвет фона с tmux vim. Любая помощь в этом была бы отличной.

2 ответа

Это просто быстрое расследование.

  1. после выполнения tmux внутри gnome-termnial, "COLORTERM" будет перезаписан. Это означает, что $COLORTERM имеет значение NULL внутри tmux.

Поток этих переменных.

  1. gnome-терминал запускается и загружает ваш.zshrc. (TERM=xterm-256color COLORTERM = гном-терминал)
  2. Tmux начинается. (он перезаписывает COLORTERM, загружает его конфигурацию "default-Terminal" в качестве значения TERM)
  3. tmux load.zshrc (TERM переписывается в "xterm-256color")
  4. Сейчас => TERM = "xterm-256color" COLORTERM = ""
  5. vim начинается => (помимо вашей конфигурации.vimrc t_Co устанавливается в 256, если термин 256 цветов)

Проблема в том, что tmux правильно поддерживает 256 цветов, только если TERM="screen-256color" вместо "xterm-256color".

Ниже приведено решение:

Во-первых, добавьте это в ваш.zshrc (я использую синтаксис bash):

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

Во-вторых, добавьте это в ваш "~/.tmux.conf":

set -g default-terminal screen-256color

Последнее, настройки vim не нужны.

Любые дополнительные вопросы, пожалуйста, прокомментируйте.

Попробуйте следующее. Это сработало для меня:


.tmux.conf

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

Кроме того, удалить старый term значение для .vimrc

Другие вопросы по тегам