фон tmux vim colorscheme не отображается

12

Я установил tmux, но теперь текстовые режимы vim не правильно заполняют цвет фона. Вот как это выглядит с colorscheme xoria256 в обычном терминале Ubuntu 14.10:

введите описание изображения здесь

И вот когда я запускаю его в том же терминале после tmux:

введите описание изображения здесь

Так что, как вы видите, рабочий стол просвечивает везде, где нет текста в vim. У меня есть терминал с 256 цветами.

Мой .tmux.conf:

~ cat .tmux.conf
set -g mode-mouse on
set -g default-terminal "screen-256color"

и у меня есть терминал с 256 цветами:

~ tput colors
256

Как заставить tmux правильно работать с 256-цветными цветовыми схемами vim, которые нормально работают в обычном терминале?

Томас Браун
источник
По моему опыту, tmux ведет себя странно при запуске внутри gnome-terminal. Попробуйте запустить tmux с TERM=xterm tmuxи посмотрите, будет ли он вести себя по-другому. Если xtermне работает, попробуйте xterm-256colorили xterm-color.
jw013
@ jw03 К сожалению, ни один из этих вариантов не помог исправить это. Одинаковое поведение. Такое же поведение, если я запускаю tmux внутри терминатора
Томас Браун
1
Какова ценность оболочки в tmux $TERM? Если это не так screen-256color, попробуйте запустить vimкак TERM=screen-256color vim, а затем убедитесь, что не запускаются сценарии запуска TERM(или, если вам нужно это сделать, чтобы обойти ошибочное программное обеспечение, сначала убедитесь, что оно проверяет исходное значение).
Ry-
@minitech: Бинго. У меня был xterm-256color, тогда как screen-256color решает проблему. Если вы сделаете это ответ, я приму его.
Томас Браун
Это сработало для меня: stackoverflow.com/a/15095377/96855
Оливье Лалонд

Ответы:

5

Это происходит, когда в среде Vim TERMне установлено правильное значение screen[-256color], обычно с помощью какого-либо сценария запуска оболочки. Если это так - например, у вас есть

TERM=xterm-256color

либо удалите его, либо убедитесь, что он проверяет исходное значение TERMперед его изменением, например

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi
Рыбаковым
источник
8

в вашем .tmux.conf:

set -g default-terminal "screen-256color"
Уэйн Уокер
источник
2

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

if [[ $TERM == screen]]; then
    TERM=screen-256color
fi

в дополнение к первому условному утверждению в моем .bashrcфайле:

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

У меня также было это в .tmux.conf:

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

В моем .vimrcфайле:

set term=screen-256color
PQL
источник