3

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 では機能しません。AWKScriptEmbedded 領域の開始パターンとして $AWK に一致するルールを追加するにはどうすればよいですか?

4

1 に答える 1

3

問題は$AWK、構文グループによって既に強調表示されているshDerefSimpleため、新しいリージョンが適用されないことです。構文定義を 2 つの部分に分割し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
于 2012-12-18T02:00:39.447 に答える