首页 > 解决方案 > vim 语法仅在被否定词后突出显示

问题描述

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

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

result:good
result:0x0000

但是我想强调

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

但我无法为这个负面结果制作正则表达式。请问我可以请求您的支持吗?

PS:我试过了

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

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

标签: regexvimsyntax

解决方案


该模式@!零宽度匹配。为了突出冒号后的所有内容,我们可以.*在模式后添加(任意数量的任意字符)以匹配行的其余部分,前提是(good|0x0000)匹配。

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

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

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

推荐阅读