隐藏颜色标签并以相应颜色格式化标签内容

时间:2017-09-19 14:50:16

标签: vim vim-syntax-highlighting

我有一个带有颜色标签的文本文件,例如: 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的来源,这对于我的简单任务来说似乎过于复杂。 只有几种不同的颜色,我可以为其指定单独的语法规则。

1 个答案:

答案 0 :(得分:1)

我首先想到的是我正在查看一个错误,但重新阅读:help :syn-concealends,最后一句话具有重要意义:

  

区域的末端只能单独隐藏   通过这种方式,当他们通过&#34; matchgroup&#34;

进行自己的突出显示时

换句话说,concealends只有在您指定matchgroup=...时才会生效;我想这是因为实施原因;隐瞒与某些突出小组有关。

所以,要修复你的例子,请使用:

:syn region myColorTag matchgroup=String start=/<color=#[0-9a-f]*>/ end=/<\/color>/ concealends

您已经知道以一般方式解析颜色信息的插件。我同意你的看法,使用有限的一组颜色,只需编写单独的语法规则并突出显示组就可以了。