本文介绍了Vim中的嵌入式awk语法突出显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在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
这篇关于Vim中的嵌入式awk语法突出显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!