如何在Vim中语法突出显示CDATA元素中的XML?
Vim对XML/XSL的语法突出显示非常好,只是它关闭了CDATA区域中的所有语法突出显示。有没有办法在CDATA区域中启用语法高亮显示 在工作中,我们在其他XML文档中嵌入了大量XSL代码。如果我能够在不需要临时删除CDATA标记或将CDATA内容复制到临时文件的情况下,也能获得嵌入XSL代码的XML编辑的所有好处,那就太好了 例如:如何在Vim中语法突出显示CDATA元素中的XML?,xml,vim,syntax-highlighting,Xml,Vim,Syntax Highlighting,Vim对XML/XSL的语法突出显示非常好,只是它关闭了CDATA区域中的所有语法突出显示。有没有办法在CDATA区域中启用语法高亮显示 在工作中,我们在其他XML文档中嵌入了大量XSL代码。如果我能够在不需要临时删除CDATA标记或将CDATA内容复制到临时文件的情况下,也能获得嵌入XSL代码的XML编辑的所有好处,那就太好了 例如: <root> <with type="xsl"><![CDATA[ <xsl:template match=
<root>
<with type="xsl"><![CDATA[
<xsl:template match="/">
<!-- XSL content here -->
</xsl:template>
]]>
</with>
</root>
]]>
XSL总是包含在中,因此有一些东西需要匹配
我们有时还会在CDATA区域中嵌入Javascript。为这些区域打开Javascript语法高亮显示会很好。您需要修改vim附带的语法高亮显示脚本(在我的系统上,它位于
/usr/share/vim/vim72/syntax/xml.vim
中)。但是,我很确定这是一个坏主意-您将在“错觉”下操作,即CDATA部分的内容实际上是XML,而它绝对不是XML-因为它在CDATA部分中只是文本
为了处理嵌入式javascript(对我来说风险较小),您还需要创建一个修改过的语法高亮。一个开始寻找如何做到这一点的信息的好地方是vim的语法高亮显示-它支持嵌入式语言这是不可能的
我把这个问题留了9个月没有任何进展,我自己的研究也没有发现任何有用的东西。因此,我别无选择,只能断定这根本不可能。syntax include指令专门用于完成这类任务,
xml.vim
(在最近的版本中,您的可能有所不同)有一个名为xmlcatahook
的“hook”集群,您可以用自己的语法文件覆盖它
打开xml.vim
语法文件并添加此行:
syn include @xmlCdataHook <sfile>
看起来您可以通过将修改放在
~/.vim/after/filetype.vim
文件中来扩充语法文件。因此,我可以通过创建~/.vim/after/xml.vim
来更改xml的语法突出显示规则。我只是不知道该在文件中放什么…啊,我忘了那个文件(我现在已经从大部分vim转移到大部分GUI编辑器)。这可能是你应该在vim邮件列表上问的一个问题,我怀疑我尝试过这个,但它不起作用。CDATA部分中的XML继续被视为纯文本。我应该用什么替换吗?不,指的是“这个文件”。好的,知道我为什么不能让它工作吗?我在Ubuntu 11.10上使用Vim 7.3。
syntax include @JS $VIMRUNTIME/syntax/javascript.vim
syntax region start=/\V<![CDATA[/ end=/\V]]>/ contains=@JS