如何为多行字符串突出显示构建Vim语法规则?

时间:2017-02-27 20:19:54

标签: json vim vim-syntax-highlighting

我已经获得了#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惯用语,例如\zeconcealendscontained以及我在.vim文件中看到的其他内容。并且,上面的突出显示包括引号本身,这与已经突出显示简单引号的方式不一致。

任何人都可以建议我如何改进vim语法和突出显示,以便只突出显示多行引号的主体以及对转义的支持,并以非贪婪的方式完成?

0 个答案:

没有答案