Vim - 如何突出显示模式的一部分

Mir*_*pov 5 c# vim syntax-highlighting

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

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

syn match csObject  "[A-Z][_a-zA-Z0-9]*\.[A-Z]"
Run Code Online (Sandbox Code Playgroud)

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

hi csObject     guifg=#ff0000
Run Code Online (Sandbox Code Playgroud)

然而,它也绘制了 . 和下一个“单词”的第一个字母。

在此处输入图片说明

如何仅突出显示点之前的匹配项?

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

这让我可以正确地进行匹配:

syn match csObject         "[ \t\(\!]\zs[A-Z][_a-zA-Z0-9]\{-}\ze\.[A-Z]"
Run Code Online (Sandbox Code Playgroud)

rom*_*inl 5

您只需要对正则表达式进行一个微小的修改即可解决您的问题。

您的模式实际上涵盖Application.、 和以下大写字母。你应该做的是\ze用来标记你的模式“有用”部分的结束:

syn match csObject "[A-Z][_a-zA-Z0-9]*\ze\.[A-Z]"
Run Code Online (Sandbox Code Playgroud)

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