Tsql Vim-自定义语法-如何匹配第二个单词

Tsql Vim-自定义语法-如何匹配第二个单词,tsql,vim,syntax-highlighting,Tsql,Vim,Syntax Highlighting,我正在尝试为Sybase T-SQL创建自定义语法高亮显示,但在尝试匹配以下行中的表名时遇到了问题: UPDATE myTableName 我试过: syn match tsqlUpdateTableName "\w\+" contained syn match tsqlUpdateLine "update.*" nextgroup=tsqlUpdateTableName hi tsqlUpdateTableName guifg=white guibg=red 但它与myTableName

我正在尝试为Sybase T-SQL创建自定义语法高亮显示,但在尝试匹配以下行中的表名时遇到了问题:

UPDATE myTableName
我试过:

syn match tsqlUpdateTableName "\w\+" contained
syn match tsqlUpdateLine "update.*" nextgroup=tsqlUpdateTableName

hi tsqlUpdateTableName guifg=white guibg=red
但它与myTableName不匹配 我将感谢任何帮助。
干杯

问题是
nextgroup
仅在当前组匹配之后匹配

您可以通过在行匹配中排除表名来解决此问题,方法是删除
*
,或者像我在这里所做的那样,断言以下表名,但以
\ze
结束匹配:

syn match tsqlUpdateTableName "\w\+" contained
syn match tsqlUpdateLine "update \ze\w\+" nextgroup=tsqlUpdateTableName
或者,您可以在行匹配中包含表名,并改用
contains=

syn match tsqlUpdateTableName "update \zs\w\+" contained
syn match tsqlUpdateLine "update \w\+" contains=tsqlUpdateTableName


PS:您可能应该将您的模式收紧到整个单词匹配,例如,
“\
;否则,它可能会错误地匹配内部单词,如
catchupdate

谢谢Ingo的解释,它按预期工作!祝您有一个愉快的一天。