分页时,tmux中的vim背景颜色会发生变化

mos*_*hen 36 vi vim tmux

我在Solaris上使用256色模式的vim(通过Windows上的Putty连接).一切看起来都很棒并且在tmux之外工作正常,但是在tmux中,当分页/滚动文件时,背景颜色会定期更改.

这是它应该如何看待:

这是在稍微分页之后它出现的方式:

谢谢!

sun*_*aku 51

如此处所述,通过清除终端选项(在Vim中运行,然后按+ 以刷新终端的显示)禁用背景颜色擦除(BCE),以便在tmux和GNU屏幕内使用Vim时颜色方案可正常工作.t_ut:set t_ut=ControlL

根据上面的链接,可以通过添加以下内容在.vimrc中设置BCE

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
Run Code Online (Sandbox Code Playgroud)


And*_*rew 17

添加替代解决方案,因为我自己遇到了这个问题并且只是解决了它.我有正确的TERM值,terminfo文件在那里,等等,但背景仍然只会在包含可打印字符的单元格或其左侧的单元格后面绘制.

如果你经常在GUI vim和CLI vim之间切换,你可能会.vimrc在某个时候在你的文件中添加这样的东西:

if !has("gui_running")
    set term=xterm
endif
Run Code Online (Sandbox Code Playgroud)

(或者实际上任何覆盖所有TERM变量的内容.vimrc)

将终端覆盖更改为screen-256color.

...
set term=screen-256color
...
Run Code Online (Sandbox Code Playgroud)

  • 这对我也有用。除了它似乎破坏了很多键盘映射(例如 CommandT 中的箭头、ctrl+箭头映射):/ (2认同)
  • `.vimrc`中的`set term = screen-256color`帮助了我.谢谢! (2认同)

jas*_*yan 8

这看起来像您的术语设置或terminfo的问题.

确保您在tmux中的术语是TERM=screen-256color并且您的solaris盒具有正确的terminfo.