【问题标题】:Word-under-cursor highlighting *and* multi-highlighting in VimVim 中光标下的单词高亮 * 和 * 多重高亮
【发布时间】:2013-07-17 16:35:57
【问题描述】:

我目前正在使用两个插件,它们独立工作非常好,但会稍微相互干扰:

MarkHiCursorWords

这两个插件似乎都使用了一种相似的方法,导致高亮样式相互干扰。

我将光标下的单词的突出显示设置为简单地为单词添加下划线(我尝试将其加粗,但这有点太微妙且太容易被忽视),而不改变它的颜色或任何东西。这本身就非常有效,因为所有单词都继续使用其语法突出显示的颜色。

但是,一旦启用了标记,标记单词的高亮将被光标单词高亮覆盖。由于高光的属性不相交,因此理论上应该可以使标记高光保持不变,并且当光标位于其中任何一个上时,除了它们已经拥有的任何其他样式之外,它们应该简单地获得下划线已申请。

考虑到这些插件使用matchadd(),这有可能吗?是否只是将这个功能添加到 Mark 插件中,以便我们可以多路复用突出样式以解决同时分层 3 样式的需要?最大的问题是,是否可以同时分层 3 层样式?

(我知道可以进行第二层,因为例如 HiCursorWords 可以在评论中为单词加下划线,这会导致单词(我将我的 cmets 设置为斜体)变为斜体并加下划线;例如使用 Mark,标记的单词评论内部变得突出显示(背景颜色改变,前景颜色改变,并保持斜体) - 问题是我们是否可以应用两者以导致显示评论词,背景/前景颜色改变,下划线,仍然是斜体,当我的光标在它上面并且它被标记时?)

编辑:看来matchadd() 将简单地覆盖matchadd() 之前设置的任何样式。因此,如果我可以让 HiCursorWords 插件检查单词是否已经被 Mark 突出显示,那么它可以设置特殊的第三种样式(将突出显示和下划线)。希望有办法。

此外,我注意到/ 搜索突出显示样式覆盖了所有其他matchadd 突出显示。因此,我在 word-highlight 中的下划线将被它覆盖。如果我也能在这种情况下显示下划线,那就太好了。

【问题讨论】:

    标签: terminal syntax-highlighting vim vim-plugin


    【解决方案1】:

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

    由于 HiCursorWords 插件像 Mark 一样使用 matchadd(),您可以尝试我的替代方法 SearchHighlighting plugin,它也提供光标下单词的突出显示,但使用改为默认搜索突出显示。

    说到搜索突出显示和matchadd(),您可以通过matchadd() 的可选{priority} 参数来影响哪个在顶部(必须> 0 才能在顶部)。

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 2015-05-13
      • 1970-01-01
      • 2011-05-08
      • 2013-01-31
      • 1970-01-01
      • 2017-12-20
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多