光标线的颜色在哪里定义?
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")
也可以通过类似的调用判断underline
、undercurl
等的状态。
几个警告: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 了解其他一些自定义方法
【讨论】:
以上是关于光标线的颜色在哪里定义?的主要内容,如果未能解决你的问题,请参考以下文章