是否可以为 vim 中的 'specific symbol' 提供用户定义的颜色?

Is it possible to give a user defined color to a 'specific symbol' in vim?

我正在 vim editor.Is 中处理一个 Grammar.txt 文件,我可以用一种方法为“/”赋予不同的颜色,这样它在视觉上更具吸引力我的眼睛。

我的很多工作都需要在纸上进行,以这种方式在屏幕上区分关键字会很有帮助。

这是我文件中的一个小片段

<Prog> ------ <functions><building>
<functions> ------ <function><functions>/ #
<function> ------ <funsig> <funcbody>
<funsig>------ <type>  id (<params>)
<type> ------ int/float/distance/<floortype>/point/wall/doors/window/ratio
<params>------ <type>id<LF1>/#
<LF1>---------comma<params>/#
<funcbody>----- {<stats>}
<stats>----- <stat> <stats>/ #
<stat>----- <assignmentstats>/<returnstats>/<declarativestats>

假设您使用搜索突出显示 (:set hlsearch),只需搜索 /:

/\/

示例:

您可以使用 :match 命令:

:match {color-group} /\//

您可以使用不带任何参数的 :highlight 命令获取颜色组列表。因此,像这样:

:match Function /\//

您还可以通过调用 clearmatches 函数清除任何用户创建的匹配项。

:call clearmatches()

关于这些命令的更多帮助:

:help :match
:help :highlight

我想补充一下@EvergreenTree 的回答。

Vim 具有称为 匹配 突出显示 功能,它确实是这样工作的:

:match Error /pat/

第一个参数标记一个高亮组,您可以使用 :hi 查看其中的列表。第二个参数是正则表达式支持的搜索模式,需要用 / 分隔符包装。如果模式不清楚,您通常会通过发出传统搜索来测试模式。当模式看起来不错时,您可以通过键入 <C-r> /:match 行中插入最后搜索到的模式。您可以通过不带参数单独调用 :match 来清除突出显示。

还有命令:2match:3match可以同时高亮显示更多不同的模式。这些工作类似于 :match.

如果您需要更多匹配(通过日志文件分析很容易发生),有一组 VimL 函数:

:call matchadd('Function', 'patt')
:call clearmatches()

这次模式不需要周围的 / 分隔符,但正则表达式语法保持不变。