Tmux zmienia część tła w vimie

15

Wydaje się, że dzieje się tak tylko podczas używania vima w tmuxie. Używam również iTerm 2.

Jeśli utworzę nowy panel tmux lub zmień jego rozmiar, od razu wygląda to tak:

pomieszane tło w vimie

A potem jedynym sposobem, aby to naprawić, jest przewinięcie w vimie, i wraca do tego:

dobre tło w vimie

Co może być tego przyczyną?

aharris88
źródło
Dzieje się to również w standardzie gnome-terminal, bez tmux.
wchargin
Zobacz tę odpowiedź, aby znaleźć inspirację na temat rozwiązania tego problemu: stackoverflow.com/a/37863269/5153834
bloodrootfc

Odpowiedzi:

19

Możesz spróbować dodać następujące elementy do pliku .vimrc.

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

t_utOpcja (domyślnie = y) opisuje jak vim uchwyty, co chce jak kolory tła w porównaniu do próby użycia bieżący kolor tła. Ten fragment usuwa tę opcję.

Jeśli nie, możesz spróbować

set ttyfast

która jest opcją, która obsługuje sposób przerysowywania ekranów przez vima.

davidlowryduda
źródło
2
Ustawienie opcji t_ut działało!
aharris88
To nie działało dla mnie. Już ustawiłem ttyfasti próbowałem wyczyścić t_utbez efektu. Moja konfiguracja jest taka sama jak OP, z wyjątkiem, którego używamtermguicolors wewnątrz Tmux skonfigurowanego do obsługi prawdziwych kolorów. Vim znakomicie rysuje się w iTerm, ale zaczyna pokazywać tę samą dziwność ekranu, co powyżej, kiedy biegam w Tmux. Daj mi znać, jeśli powinienem otworzyć nowe pytanie; Pomyślałem, że tutaj sięgnę, ponieważ mam zasadniczo ten sam problem.
djmoch
1

Myślę, że jest to związane z ttyfasttym, że ekran nie jest w pełni przerysowany. Spróbuj włączyć to:

'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
źródło