vim in tmux background color changes when paging

2019-01-30 18:23发布

I am using vim in 256 color mode on Solaris (connected via Putty on Windows). Everything looks great and works fine outside of tmux, but within tmux the background color changes periodically when paging/scrolling through a file.

Here is how it's supposed to look:

Here is how it appears after paging around a bit:

Thanks!

标签: vim vi tmux
4条回答
时光不老,我们不散
2楼-- · 2019-01-30 18:54

This looks like an issue with your term setting, or terminfo.

Make sure that your term in tmux is TERM=screen-256color and that your solaris box has the correct terminfo.

查看更多
对你真心纯属浪费
3楼-- · 2019-01-30 18:54

This bug is fixed in vim 7.4 patch 7.4.1942

Relevant issue: 804

查看更多
看我几分像从前
4楼-- · 2019-01-30 19:08

Adding an alternative solution, as I ran into this problem myself and only just solved it. I had the correct TERM value, the terminfo file was there, etc., but the background would still only be drawn behind cells that contained printable characters, or cells to the left of them.

If you switch between GUI vim and CLI vim often, you may have put something like this in your .vimrc file at some point:

if !has("gui_running")
    set term=xterm
endif

(Or really any overriding at all of the TERM variable within .vimrc)

Change the terminal override to screen-256color.

...
set term=screen-256color
...
查看更多
beautiful°
5楼-- · 2019-01-30 19:14

As explained here, disable Background Color Erase (BCE) by clearing the t_ut terminal option (run :set t_ut= in Vim and then press Control+L to refresh the terminal's display) so that color schemes work properly when Vim is used inside tmux and GNU screen.

Per the above link, BCE can be set in .vimrc by adding the following

if &term =~ '256color'
    " disable Background Color Erase (BCE) so that color schemes
    " render properly when inside 256-color tmux and GNU screen.
    " see also http://snk.tuxfamily.org/log/vim-256color-bce.html
    set t_ut=
endif
查看更多
登录 后发表回答