vim:使用matchadd'全局'(即突出显示一堆行)

时间:2011-12-29 20:35:16

标签: vim pattern-matching

我有一个看起来像这样的文件

def foo bar {{
   // some stuff in here that shouldn't have }}; in it
}};

我想语法突出显示这些块的某些类型。我的第一个订单近似是:

highlight DefFoo ctermfg=darkgreen                  
let defFoo = 'def foo .* {{.*}};'             
call matchadd('DefFoo', defFoo)     

但是,突出显示的唯一内容是第一行def foo bar {{。我一直试图找到一种方法来执行全局搜索的matchadd,但我一直在失败。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

.与新行不匹配。另一方面\_.。所以你的模式是:

def foo \_.* {{\_.*}};

我发现使用类似以下内容的一场比赛很不错:

:match Error /foo-pattern-here/

可以用

清除
:match

请注意,具有昂贵模式的:match可能会导致匹配的文本在某些屏幕重绘时无法正确突出显示。调整您的模式或向上调整'redrawtime'

了解更多信息:

:h :match
:h /\_.