Tsql Vim-自定义语法-如何匹配第二个单词
我正在尝试为Sybase T-SQL创建自定义语法高亮显示,但在尝试匹配以下行中的表名时遇到了问题: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
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的解释,它按预期工作!祝您有一个愉快的一天。