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

时间:2019-02-17 09:26:30

标签: regex vim syntax

我正在编写一个语法插件,该插件突出显示日志中的某些关键字。 但是仅在出现否定结果词的情况下,我很难突出显示内容。

例如,我不希望突出显示成功

result:good
result:0x0000

但是我想突出显示

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

但是我不能为这个负面结果做一个正则表达式。 请问我可以要求您的支持吗?

PS:我已经尝试过

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

但它不会突出显示:(冒号)之后的其余部分。

1 个答案:

答案 0 :(得分:2)

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

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

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

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