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

时间:2010-07-16 22:15:38

标签: terminal highlighting vim colors

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

修改:我了解CursorLine突出显示组。问题是在我使用的默认colorscheme中没有定义,:hi CursorLine显示

CursorLine     xxx term=underline cterm=underline

其中xxx用黄色着色并加下划线。我不想改变颜色,我想为cursorline添加2html.vim支持 - 就像插件一样,所以我需要一些突出显示组/变量/等,我可以从中获得这种黄色。

3 个答案:

答案 0 :(得分:6)

修改:您可以使用synIDattr()功能查询特定突出显示组的大部分值。例如,如果设置了CursorLine,则会打印分配给:echo synIDattr(synIDtrans(hlID("CursorLine")), "fg") 的前景色:

underline

您还可以使用类似的来电来确定undercurlsynIDattr()等的状态。

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

Problem with synIDattr()

Programmatically detect a current "highlight" setting?

如果highlight无法满足您的需求,可能更容易将:redir => cursorline_highlight | silent highlight CursorLine | redir END :echo "CursorLine highlight: " . cursorline_highlight 命令的输出重定向到变量并自行解析:

highlight

可以使用:highlight CursorLine term=underline guibg=#555555 cterm=underline 命令设置光标线的颜色,如下所示:

colorscheme

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

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

CursorLine

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

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

Vim包含多个colorscheme文件,您可以在线找到更多。这是一个预览几百个网站:

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

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

{{1}}

答案 1 :(得分:1)

另请查看http://vim.wikia.com/wiki/Configuring_the_cursor以了解其他一些自定义方法

答案 2 :(得分:0)

在coloescemes上,cursorline颜色的属性叫做“CursorLine”。例如,wombat colorscheme使用以下行:

hi CursorLine guibg=#2d2d2d

如果要更改默认颜色方案,则会在/ usr / share / vim / vim72 / colors上存储(在大多数Linux发行版上)文件。

只有一个注意事项:CursorLine选项仅适用于Vim 7以上版本,因此对于非常不可能的情况,您可以使用带有7(或Vi)之前版本的colorscheme,您应该在colorscheme文件中询问版本,例如:

if version >= 700
  hi CursorLine guibg=#2d2d2d
endif