Tmux正在更改Vim中的部分背景


15

这似乎仅在tmux内部使用vim时发生。我也在使用iTerm 2。

如果我创建一个新的tmux窗格或调整tmux窗格的大小,它将立即如下所示:

弄乱了vim中的背景

然后解决此问题的唯一方法是在vim中滚动,回到原来的样子:

在vim中具有良好的背景

是什么原因造成的?


如果gnome-terminal没有,也会在标准情况下发生tmux
wchargin

有关如何解决此问题的一些启发,请参阅以下响应:stackoverflow.com/a/37863269/5153834
bloodrootfc

Answers:


19

您可以尝试将以下内容添加到.vimrc中。

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

t_ut选项(默认值= y)描述了vim与尝试使用当前背景色相比如何处理其想要的背景色。此代码段清除了该选项。

如果没有,那么您可以尝试

set ttyfast

这是一个处理vim重绘屏幕的选项。


2
设置t_ut选项有效!
aharris88

这对我不起作用。我已经设置好ttyfast,并尝试清除t_ut无效。我的设置与OP相同,但我在termguicolors配置为支持真彩色的Tmux内部使用。Vim在iTerm内出色地绘制,但是当我在Tmux内运行时,开始显示与上面相同的屏幕怪异感。让我知道是否应该提出一个新问题;我以为我会在这里伸出援手,因为我遇到了基本上相同的问题。
djmoch '16

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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.