vim语法仅在被否定词后面突出显示

问题描述 投票:0回答:1

我正在编写一个语法插件,它突出了我日志中的某些关键字。但是,只有在被跟随结果否定的情况下才能突出显示。

例如,我不想在成功时突出显示,

result:good
result:0x0000

不过我想强调一下

result:bad
result:notready
result:0x0001
result:0xffff
result:0x0002

但我不能为这个负面结果制作一个正则表达式。我可以请求你的支持吗?

PS:我试过了

syntax match error_result "\vresult:(good|0x0000)@!"

但它并没有突出显示剩下的部分:(冒号)。

regex vim syntax
1个回答
2
投票

模式@!匹配零宽度。要突出显示冒号后的所有内容,我们可以在模式后添加.*(任意数量的任何字符)以匹配行的其余部分,仅当(good|0x0000)组不匹配时。

syntax match error_result "\vresult:(good|0x0000)@!.*"

如果您只希望突出显示result:之后的文本,但仍然匹配相同的内容,请添加匹配(突出显示)应该开始的\zs序列。例如:

syntax match error_result "\vresult:(good|0x0000)@!\zs.*"
© www.soinside.com 2019 - 2024. All rights reserved.