本文介绍了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语法突出显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 01:57