Tmux меняет часть фона в vim

15

Кажется, это происходит только при использовании vim внутри tmux. Я также использую iTerm 2.

Если я создаю новую панель tmux или изменяю размер панели tmux, она сразу выглядит следующим образом:

испортил фон в vim

И тогда единственный способ исправить это - прокрутить в vim, и это возвращается к следующему:

хороший фон в vim

Что может быть причиной этого?

aharris88
источник
Это происходит в стандарте gnome-terminalтоже без tmux.
wchargin
Посмотрите этот ответ, чтобы узнать, как решить эту проблему: stackoverflow.com/a/37863269/5153834
bloodrootfc

Ответы:

19

Вы можете попробовать добавить следующее в ваш .vimrc.

if &term =~ '256color'
  " disable Background Color Erase (BCE)
  set t_ut=
endif

t_utВариант ( по умолчанию = у) описывает , как VIM ручки , что он хочет , как цвета фона по сравнению с попыткой использовать текущий цвет фона. Этот фрагмент очищает эту опцию.

Если нет, то вы можете попытаться

set ttyfast

Это опция, которая управляет тем, как vim перерисовывает экраны.

davidlowryduda
источник
2
Установка опции t_ut сработала!
aharris88
Это не сработало для меня. Я уже установил ttyfast, и попытался очистить t_utбез эффекта. Моя настройка такая же, как у OP, за исключением того, что я использую termguicolorsвнутри Tmux, настроенного для поддержки истинного цвета. Vim великолепно рисует внутри iTerm, но начинает показывать ту же странность экрана, что и выше, когда я бегу внутри Tmux. Дайте мне знать, если я должен открыть новый вопрос; Я думал, что достигну здесь, так как я испытываю по существу ту же проблему.
djmoch
1

Я считаю, что это связано с ttyfastтем, что экран не полностью перерисован. Попробуйте установить его на:

'ttyfast' 'tf'      boolean (default off, on when 'term' is xterm, hpterm,
                    sun-cmd, screen, rxvt, dtterm or
                    iris-ansi; also on when running Vim in
                    a DOS console)
            global
            {not in Vi}
    Indicates a fast terminal connection.  More characters will be sent to
    the screen for redrawing, instead of using insert/delete line
    commands.  Improves smoothness of redrawing when there are multiple
    windows and the terminal does not support a scrolling region.
    Also enables the extra writing of characters at the end of each screen
    line for lines that wrap.  This helps when using copy/paste with the
    mouse in an xterm and other terminals.
firedev
источник