光标线的颜色定义在哪里?

ZyX*_*ZyX 7 vim terminal colors highlighting

如果我设置cursorline选项,我的当前光标线加下划线,并且所有未指定颜色的字符也变为黄色(仅当普通高亮组未触及时,黄色才会出现).我想知道,这个颜色(黄色)的定义在哪里?

编辑:我知道CursorLine高亮组.问题是在我使用它的默认colorscheme中没有定义和:hi CursorLine显示

CursorLine     xxx term=underline cterm=underline
Run Code Online (Sandbox Code Playgroud)

其中xxx用黄色和下划线着色.我不想改变颜色,我想添加cursorline2html.vim类似插件的支持,所以我需要一些高亮组/变量/等我可以从中得到这种黄色.

Bil*_*dom 6

编辑:您可以使用该synIDattr()功能查询特定突出显示组的大多数值.例如,这将打印分配给的前景色(CursorLine如果已设置):

:echo synIDattr(synIDtrans(hlID("CursorLine")), "fg")
Run Code Online (Sandbox Code Playgroud)

您也可以决定的状态underline,undercurl等等,类似的电话.

一些警告:synIDattr()有缺陷且不完整.它有时会意外返回-1,并且当前不允许检查所有属性.(据说即将发布的Vim版本正在开发补丁.)有关更多信息,请参阅以下主题:

synIDattr()的问题

以编程方式检测当前的"突出显示"设置?

如果synIDattr()不能执行您想要的操作,可能更容易将highlight命令的输出重定向到变量并自行解析:

:redir => cursorline_highlight | silent highlight CursorLine | redir END
:echo "CursorLine highlight: " . cursorline_highlight
Run Code Online (Sandbox Code Playgroud)

可以使用如下highlight命令设置光标线的颜色:

:highlight CursorLine  term=underline  guibg=#555555  cterm=underline
Run Code Online (Sandbox Code Playgroud)

这通常在Vim colorscheme文件中完成,该文件包含许多这样的行来定义Vim用户界面的部分颜色,以及常见的句法元素,如字符串,数字,关键字等.

您可以通过发出colorscheme命令后跟方案名称来告诉Vim使用哪种colorscheme .以下是一些尝试:

:colorscheme desert
:colorscheme evening
:colorscheme koehler
Run Code Online (Sandbox Code Playgroud)

但是,Vim中包含的大多数colorschemes实际上并不包含CursorLine元素的高亮命令,因此Vim只使用其内置的默认光标线着色.

要更改Vim用于光标线的颜色,您可以highlight.vimrc文件中包含您自己的命令(您发出任何colorscheme命令之后;否则您的高亮颜色可能会被清除).更好的是,您可以制作自己的colorscheme文件并在那里添加适当的高亮语句.(通过找到可容忍的colorscheme,然后复制它并做出你喜欢的任何改变,让自己变得容易.)

Vim包含几个colorscheme文件,你可以在网上找到更多.这是一个预览几百的网站:

http://code.google.com/p/vimcolorschemetest/

有关详细信息,请参阅以下帮助主题:

:help :colorscheme
:help :highlight
:help hl-CursorLine
Run Code Online (Sandbox Code Playgroud)