Vim - 如何突出显示图案的一部分

Vim - How to highlight a part of a pattern

我想在 Vim C# 中突出显示一个对象。

我在 cs.vim 中执行以下操作:

syn match csObject  "[A-Z][_a-zA-Z0-9]*\.[A-Z]"

并在我的颜色主题中突出显示它

hi csObject     guifg=#ff0000

但是它也绘制了 .和下一个 "word".

的第一个字母

如何只高亮点之前的匹配项?

编辑 感谢@romainl 的回答,我发现 \zs 设置了比赛的开始,\za 设置了比赛的结束。

这让我能够正确匹配:

syn match csObject         "[ \t\(\!]\zs[A-Z][_a-zA-Z0-9]\{-}\ze\.[A-Z]"

您只需对正则表达式稍作修改即可解决您的问题。

您的模式实际上涵盖了 Application. 和后面的大写字母。您应该做的是使用 \ze 标记模式的 "useful" 部分的结尾:

syn match csObject "[A-Z][_a-zA-Z0-9]*\ze\.[A-Z]"

此外,我会使用 \{-} 而不是过于贪婪的 *