我有一个语法文件,用于突出显示 bash 脚本中嵌入的 awk:
syn include @AWKScript syntax/awk.vim
syn region AWKScriptCode matchgroup=AWKCommand
\ start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains @AWKScript contained
syn region AWKScriptEmbedded matchgroup=AWKCommand
\ start=+\<\(g\?awk\|\$AWK\)\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1
\ contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode
syn cluster shCommandSubList add=AWKScriptEmbedded
hi def link AWKCommand Type
问题出在这一部分:
start=+\<\(g\?awk\|\$AWK\)\>+
它适用于 awk 和 gawk,但不适用于 $AWK。如何添加规则来匹配 $AWK 作为 AWKScriptEmbedded 区域的起始模式?
问题是$AWK
已经突出显示shDerefSimple
语法组,因此不会应用您的新区域。将语法定义分为两部分并添加containedin=
对于后者:
syn region AWKScriptEmbedded matchgroup=AWKCommand
\ start=+\<g\?awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1
\ contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode
syn region AWKScriptEmbedded matchgroup=AWKCommand
\ start=+\$AWK\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1
\ contains=@shIdList,@shExprList2 containedin=shDerefSimple nextgroup=AWKScriptCode
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)