我试图制作一个vim正则表达式,在此示例中突出显示单词house
,但前提是后跟空格,并且仅当句子以分号结尾时才会显示。
herbert house mouse; bear care; house moose hat; // both instances of house highlighted
cow (house) banana goat; car bar; //house must NOT be highlighted
house beagle //house must NOT be highlighted
来自我的VIM语法文件:
syn match ngzRewLine '\w\+[^;]\{-};' contains=ngzRew
syn keyword ngzRew house contained
除非突出显示(house)
,否则效果很好。我可以使用什么正则表达式只匹配带有尾随空格和非贪婪结束分号的单词?
修改
总结一下,在以下情况下,ngzRew
关键字组中的字词应突出显示:
以下内容中不应出现任何突出显示:
house
作为示例,但ngzRew
关键字组中还有其他关键字,行为应该相同。
答案 0 :(得分:1)
你可以这样做(这可能不是很方便,但由于以下的空白,我无法想出更好的方法)
highlight MyGroup ctermbg=green guibg=green
syntax match MyGroup /\(house\|car\)\ze\(;\|\s.\{-};\)/
现在它也匹配car
。
答案 1 :(得分:1)
syn match ngzRewLine /\w\+\ze\(;\|\s.\{-};\)/ contains=ngzRew contained
syn keyword ngzRew house contained
syn keyword ngzRew cheesecake contained
syn keyword ngzRew ...etc contained