我有一个带有颜色标签的文本文件,例如:
foo <color=#c16e0d>bar</color> baz
我希望标签内容在#c16e0d中着色并隐藏标签,以便结果为&#34; foo bar baz&#34;,除了bar
之外大胆,但在#c16e0d中着色。
我试过了
:syn region String start=/<color=#[0-9a-f]*>/ end=/<\/color>/ concealends
使标签及其内容变为粉红色,但不会隐藏标签本身,即使我在JSON文件中运行命令,其中隐藏工作正常(:set conceallevel=3
)。
为了着色,我查看了https://github.com/ap/vim-css-color的来源,这对于我的简单任务来说似乎过于复杂。 只有几种不同的颜色,我可以为其指定单独的语法规则。
答案 0 :(得分:1)
我首先想到的是我正在查看一个错误,但重新阅读:help :syn-concealends
,最后一句话具有重要意义:
区域的末端只能单独隐藏 通过这种方式,当他们通过&#34; matchgroup&#34;
进行自己的突出显示时
换句话说,concealends
只有在您指定matchgroup=...
时才会生效;我想这是因为实施原因;隐瞒与某些突出小组有关。
所以,要修复你的例子,请使用:
:syn region myColorTag matchgroup=String start=/<color=#[0-9a-f]*>/ end=/<\/color>/ concealends
您已经知道以一般方式解析颜色信息的插件。我同意你的看法,使用有限的一组颜色,只需编写单独的语法规则并突出显示组就可以了。