我已经获得了#34; Annotated JSON" vim语法文件,支持许多功能,例如注释。这些JSON文件通过预处理器来过滤掉习语或将带注释的JSON文件转换为标准的JSON文件。
我现在希望添加这些文件中支持的多行字符串。带注释的JSON文件中的多行字符串的语法是:
"""string that
spans over
multiple lines"""
以上内容经过预处理以生成:
"string that\nspans over\nmultiple lines"
三引号成语可以使用初始反斜杠进行转义:
"This is not a \"""multiline\""" string"
以上内容经过预处理以生成:
"This is not a \"\"\"multiline\"\"\" string"
我的问题是定义适当的vim语法,以便Annotated JSON文件具有良好的格式。这就是我到目前为止所拥有的:
syn match jsonMultilineStringMatch /"""\(.*\)"""/ contains=jsonMultilineString
syn region jsonMultilineString start=/"""/ end=/"""/
hi jsonMultilineString ctermfg=26 ctermbg=195 term=NONE cterm=NONE
我还注释了json.vim
文件中的行:
"syn match jsonTripleQuotesError /"""/
我的json.vim修改相当粗糙,不支持转义。我不理解vim惯用语,例如\ze
,concealends
,contained
以及我在.vim文件中看到的其他内容。并且,上面的突出显示包括引号本身,这与已经突出显示简单引号的方式不一致。
任何人都可以建议我如何改进vim语法和突出显示,以便只突出显示多行引号的主体以及对转义的支持,并以非贪婪的方式完成?