2014-07-23 49 views
3

我正在为Vim使用日光色配色。当我用两个水平分割的窗口打开vim会话时,水平分割几乎看不见。另一方面,窗口之间的垂直分割清晰可见更改vim中水平分割状态行的突出显示颜色

这是一个使用Cygwin上的深色日光主题的图片。您可以看到一条白色垂直线,将侧边栏与其他两个窗口分开。您还可以看到一个空白区域(顶部窗口)和一个带有文本的区域(底部窗口)。 问题是顶部和底部窗口之间没有可见的分隔线。我希望此分隔线与垂直分隔线颜色相同。

(请注意与任何色彩方案出现同样的问题,并使用Ubuntu的终端,以及时,基本上,无论在哪里我使用vim的水平分割不突出的背景不同。)

enter image description here

以下是我认为认为是solarized.vim的相关行(假设statusline是我想要配置的)。我只是不知道如何修改它们。

exe "hi! StatusLine"  .s:fmt_none .s:fg_base1 .s:bg_base02 .s:fmt_revbb 
exe "hi! StatusLineNC" .s:fmt_none .s:fg_base00 .s:bg_base02 .s:fmt_revbb 
exe "hi! Visual"   .s:fmt_none .s:fg_base01 .s:bg_base03 .s:fmt_revbb 
exe "hi! Directory"  .s:fmt_none .s:fg_blue .s:bg_none 
exe "hi! ErrorMsg"  .s:fmt_revr .s:fg_red .s:bg_none 
exe "hi! IncSearch"  .s:fmt_stnd .s:fg_orange .s:bg_none 
exe "hi! Search"   .s:fmt_revr .s:fg_yellow .s:bg_none 
exe "hi! MoreMsg"  .s:fmt_none .s:fg_blue .s:bg_none 
exe "hi! ModeMsg"  .s:fmt_none .s:fg_blue .s:bg_none 
exe "hi! LineNr"   .s:fmt_none .s:fg_base01 .s:bg_base02 
exe "hi! Question"  .s:fmt_bold .s:fg_cyan .s:bg_none 
if (has("gui_running") || &t_Co > 8) 
    exe "hi! VertSplit" .s:fmt_none .s:fg_base00 .s:bg_base00 
else 
    exe "hi! VertSplit" .s:fmt_revbb .s:fg_base00 .s:bg_base02 
endif 

编辑:我试图使用由史蒂夫建议的命令,它似乎我的问题在某种程度上更深入。我设置了以下变量,但它只在侧栏上着色分隔符。水平分割仍然没有改变。任何人都知道这里发生了什么?

exe "hi! StatusLine"  .s:fmt_none .s:fg_red .s:bg_red .s:fmt_revbb 
exe "hi! StatusLineNC" .s:fmt_none .s:fg_red .s:bg_red 
exe "hi! VertSplit" .s:fmt_revbb .s:fg_red .s:bg_red 

enter image description here

EDIT2:我拉开,我的.vimrc文件和孤立的问题,这些线。一旦这些行被注释掉,默认情况下水平分割就像垂直分割一样。哎呀!

set statusline=          " Override default 
set statusline+=%2*\ %f\ %m\ %r%*      " Show filename/path 
set statusline+=%3*%=%*        " Set right-side status info after this line 
set statusline+=%4*%l/%L:%v%*       " Set <line number>/<total lines>:<column> 
set statusline+=%5*\ %*        " Set ending space 
+0

我不知道有各变量的定义,但我的猜测是你想要的东西像'EXE“喜状态行!”。s:fmt_none .s:fg_base02 .s:bg_base02 .s:fmt_revbb'其中fg和背景具有相同的基础 – FDinoff

+0

@FDinoff不幸的是,这似乎没有做任何事情。 – Fonnae

+0

我显然不知道我在做什么,因为即使'exe“你好!StatusLine”.s:fmt_none .s:fg_green .s:bg_green .s:fmt_revbb'不会改变任何东西。 – Fonnae

回答

3

其实,水平分割是StatusLineNC

设置它

exe "hi! StatusLineNC" .s:fmt_none .s:fg_red .s:bg_base02 .s:fmt_revbb 

而且VSPLIT线

exe "hi! VertSplit" .s:fmt_none .s:fg_red .s:bg_red 

使它看起来像下面这样。不完全可见,但玩的颜色。

enter image description here

编辑:使用https://github.com/Rykka/colorv.vim/以显示线条的颜色可以更容易看到界河的颜色是什么。

+0

不幸的是,这并没有解决我的问题,但它显示我的问题是在别的地方。我将拉开我的vim配置并尝试慢慢添加回来,看看我是否能够找出问题所在。 – Fonnae

+0

我发现问题与我在.vimrc中的某些状态行格式有关。我给出了答案,因为它在技术上是问题的正确答案,它给了我解决问题所需的洞察力。红利点,如果你可以告诉我如何风格的状态线没有破坏的颜色;) – Fonnae

+0

不知道很多关于状态行,但如果你张贴导致问题的一个,这将是有趣的尝试:) – Steve

2

关于如何在不损坏颜色的情况下设置状态行的样式,状态行中的'%[num] *'序列使其从StatusLine突出显示切换到User [num]突出显示。如果删除这些(或定义相关的高亮),则可以使用自定义状态栏而不会突出显示。

来源:帮助“状态行”

* - Set highlight group to User{N}, where {N} is taken from the 
     minwid field, e.g. %1*. Restore normal highlight with %* or %0*. 
     The difference between User{N} and StatusLine will be applied 
     to StatusLineNC for the statusline of non-current windows. 
     The number N must be between 1 and 9. See |hl-User1..9| 
相关问题