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]"
此外,我会使用 \{-}
而不是过于贪婪的 *
。
我想在 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]"
此外,我会使用 \{-}
而不是过于贪婪的 *
。