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

Posted

技术标签:

【中文标题】光标线的颜色在哪里定义?【英文标题】:Where is the color of the cursor line defined? 【发布时间】:2011-03-17 04:50:20 【问题描述】:

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

编辑:我知道CursorLine 高亮组。问题是我使用的默认颜色方案没有定义,:hi CursorLine 显示

CursorLine     xxx term=underline cterm=underline

其中 xxx 用黄色着色并带有下划线。我不想改变颜色,我想添加cursorline 支持2html.vim-like 插件,所以我需要一些高亮组/变量/等,我可以从中获得这种黄色。

【问题讨论】:

属于 superuser.com 根据您的更新在下面查看我编辑的回复。 【参考方案1】:

编辑:您可以使用synIDattr() 函数查询特定突出显示组的大部分值。例如,如果设置了一个,这将打印分配给CursorLine 的前景色:

:echo synIDattr(synIDtrans(hlID("CursorLine")), "fg")

也可以通过类似的调用判断underlineundercurl等的状态。

几个警告:synIDattr() 有问题且不完整。它有时会意外返回 -1,并且当前不允许检查所有属性。 (据说正在为即将发布的 Vim 发布补丁。)请参阅这些线程以获取更多信息:

Problem with synIDattr()

Programmatically detect a current "highlight" setting?

如果synIDattr() 不会做你想做的事,将highlight 命令的输出重定向到一个变量并自己解析它可能会更容易:

:redir => cursorline_highlight | silent highlight CursorLine | redir END
:echo "CursorLine highlight: " . cursorline_highlight

光标线的颜色可以用highlight这样的命令来设置:

:highlight CursorLine  term=underline  guibg=#555555  cterm=underline

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

您可以通过发出colorscheme 命令后跟方案名称来告诉 Vim 使用什么颜色方案。这里有一些尝试:

:colorscheme desert
:colorscheme evening
:colorscheme koehler

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

要更改 Vim 用于光标线的颜色,您可以在您的 .vimrc 文件中包含您自己的 highlight 命令(在您发出任何 colorscheme 命令之后;否则您的突出显示颜色可能会被清除)。更好的是,您可以制作自己的颜色方案文件并在其中添加适当的突出显示语句。 (找到一个可以容忍的配色方案,然后复制它并进行任何你喜欢的更改,让你自己轻松一点。)

Vim 包含多个配色方案文件,您可以在网上找到更多。这是一个预览几百个的网站:

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

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

:help :colorscheme
:help :highlight
:help hl-CursorLine

【讨论】:

【参考方案2】:

在coloescemes上,光标线的颜色属性就叫做“CursorLine”。例如,wombat colorscheme 使用了这一行:

hi CursorLine guibg=#2d2d2d

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

只有一个注意事项:CursorLine 选项仅适用于 Vim 7 及更高版本,因此在极不可能的情况下,您曾经使用 7(或 Vi)之前版本的颜色方案,您应该在颜色方案文件中询问版本,例如:

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

【讨论】:

不建议更改 /usr/share/vim 或任何其他系统范围内的文件,否则在升级 vim 时必须保存并移动它们。如果你喜欢其中的一个并且只是想改变一些东西,将该文件复制到你自己的 ~/.vim/colors/whatever.vim 中(我建议你将它重命名为你选择的新名称)。现在编辑该文件并将let g:colors_name 更改为您为文件选择的名称并更改/添加您想要的任何突出显示组。请注意,在 Windows 上,您的用户特定路径将是 $HOME\vimfiles。你可以通过:set rtp?查看vim在运行时使用的路径。【参考方案3】:

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

【讨论】:

以上是关于光标线的颜色在哪里定义?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改当前光标位置指示器的颜色?

flowable 设置流程跟踪高亮线的颜色

文本编辑框光标颜色和占位文字颜色自定义

EditText光标颜色设置

SearchView 中的自定义光标颜色

Android之自定义EditText光标和下划线颜色