我在Windows上使用gvim 7.4,干净安装,没有插件。任何人都可以解释一下,为什么:
highlight statusline guifg=red guibg=green
将在红色背景上显示绿色文字。
但是这个:
highlight statusline gui=NONE guifg=red guibg=green
会在绿色背景上显示红色文字吗?
(实际目标是将状态行中的文本从粗体更改为正常。对于此任务,我添加了gui=NONE
然后,看到这种奇怪的行为。)
修改
(正如我对肯特评论的回答)
这是我完整的_vimrc。代码上只有两行:
set laststatus=2
highlight statusline gui=NONE guifg=red guibg=green
也尝试过:
hi
与highlight
StatusLine
与statusline
答案 0 :(得分:4)
要检查hi-group是如何定义的,在vim中使用:hi GroupName
,这就是为什么我一直要求OP和Carpetsmoker提供他们的cmd输出。
编译并安装vim后,已经定义了一些默认的HL-Groups。
人们不时询问默认配色方案。并希望扩展“默认”配色方案。在linux盒子上很容易找到该位置,例如,它位于/usr/share/vim/vim74/colors/default.vim
,不同的发行版可能有不同的路径。
但是,如果我们打开default.vim
,我们会看到一个相当简单的vim文件。没有任何HL定义。因为它们在vim源代码中是默认定义的。
关于StatusLine
组,它在syntax.c
文件中定义:
https://github.com/vim/vim/blob/8bc189e81aa98ba4aebb03a9dc9527a210fce816/src/syntax.c#L6784
我们可以看到reverse
位于StatusLine
和StatusLineNC
组中。
要摆脱反向“功能”,您必须覆盖gui
或cterm
属性。
答案 1 :(得分:2)
这是因为默认StatusLine
是:
:hi StatusLine
StatusLine xxx term=bold,reverse cterm=bold,reverse gui=bold,reverse
请注意reverse
和cterm
中的gui
关键字?这告诉它使用反向视频。
这也是您使用gui=NONE
(或gui=bold
)时所期望的颜色的原因。
hi与高亮显示效果相同
hi
只是highlight
的缩写版本。