在Vim中用光标在*下突出显示*和*多重突出显示

时间:2013-07-18 15:53:38

标签: terminal syntax-highlighting vim vim-plugin

我目前正在使用两个独立运行良好的插件,但这些插件稍有干扰:

MarkHiCursorWords

看来这两个插件都使用类似的方法,导致高亮样式相互干扰。

我为光标下的单词设置了高亮显示,只是为了给单词加下划线(我试着加粗,但这有点过于微妙,太容易被忽略),而不会改变它的颜色或任何东西。由于所有单词都继续使用语法高亮显示的颜色,因此这本身就很有效。

但是,一旦启用了标记,标记的单词的高光将被光标 - 高亮显示覆盖。由于高光的属性不相交,理论上应该可以使它与Mark-highlight保持一致,当光标位于其中任何一个上时,除了已有的任何其他样式之外,它们应该只是获得下划线。应用

这可能是因为这些插件使用matchadd()吗?是否只是将此功能添加到Mark插件中,以便我们可以多路复用高亮显示样式以满足同时分层 3 样式的需要?最大的问题是,甚至可以同时分层3种风格吗?

(我知道第二层是可能的,因为例如HiCursorWords可以在注释中强调一个单词,这会导致单词(我将我的注释设置为斜体)变为斜体和下划线;并且例如使用Mark,标记的单词注释内部突出显示(背景颜色改变,前景颜色改变,并保持斜体) - 问题是我们可以同时应用以导致显示注释单词,背景/前景颜色改变,下划线,仍然斜体,当我的光标在它上面且标记为?)

修改matchadd()似乎会覆盖matchadd()设置的任何先前样式。因此,如果我可以获取HiCursorWords插件来检查Mark是否已经突出显示该单词,那么它可以设置一个特殊的第三种样式(将突出显示并加下划线)。希望有办法。

此外,我注意到/搜索突出显示样式会覆盖所有其他matchadd突出显示。所以我的词汇突出显示的下划线将被它覆盖。如果我能得到下划线以表明这种情况也很好。

1 个答案:

答案 0 :(得分:1)

你没错,亮点组没有分层。您基本上可以从语法插件matchadd()和当前搜索模式中突出显示。 (有一个待处理的补丁允许:syntax个命令添加/删除属性;您可以在vim_dev mailing list上找到讨论。)

由于 HiCursorWords 插件使用matchadd(),例如标记,您可以尝试我的替代SearchHighlighting plugin,其中还提供了突出显示光标,但改为使用默认搜索突出显示。

说到搜索突出显示和matchadd(),您可以通过{priority}的可选matchadd()参数来影响哪一个(必须在&gt; 0以上)。< / p>