【问题标题】:Embedded awk syntax highlighting in vimvim 中嵌入的 awk 语法高亮显示
【发布时间】:2012-12-04 12:36:03
【问题描述】:

我有一个语法文件,用于突出显示嵌入在 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 区域的起始模式?

【问题讨论】:

    标签: vim syntax-highlighting vim-syntax-highlighting


    【解决方案1】:

    问题是$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
    

    【讨论】:

    • 像魅力一样工作,谢谢!这也是为什么在开始比赛中包含 \
    猜你喜欢
    • 2019-04-03
    • 2016-05-07
    • 2010-09-08
    • 2016-08-16
    • 2015-04-24
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多