Vim的XML / XSL语法高亮很棒,除了它关闭了CDATA区域中的所有语法高亮。有没有办法打开CDATA区域的语法高亮?
在工作中,我们在其他XML文档中嵌入了大量XSL代码。如果我能够为嵌入式XSL代码获得XML编辑的所有优点而且不必临时删除CDATA标记,或将CDATA内容复制到临时文件中,那将是很棒的。
示例:
<root>
<with type="xsl"><![CDATA[
<xsl:template match="/">
<!-- XSL content here -->
</xsl:template>
]]>
</with>
</root>
XSL始终包含在内,因此可以匹配。
我们有时也会在CDATA区域内嵌入Javascript。打开这些区域的Javascript语法高亮显示会很好。
答案 0 :(得分:2)
syntax include
指令专门用于完成此类操作,xml.vim
(在最新版本中,您的可能不同)有一个名为xmlCdataHook
的“挂钩”群集,您可以使用您自己的语法文件覆盖。
打开xml.vim
语法文件并添加以下行:
syn include @xmlCdataHook <sfile>
这为您提供了CDATA部分中突出显示的xml语法。指向另一个文件,例如<sfile>:p:h/javascript.vim
,以便突出显示javascript。
或者,您可以避免编辑xml.vim
文件,只需为CDATA部分添加自己的语法挂钩:
syntax include @JS $VIMRUNTIME/syntax/javascript.vim
syntax region start=/\V<![CDATA[/ end=/\V]]>/ contains=@JS
答案 1 :(得分:0)
您需要修改vim附带的语法高亮显示脚本(它位于我的系统上的/usr/share/vim/vim72/syntax/xml.vim
中)。但是,我很确定这是一个坏主意 - 你将在'错觉'下操作,CDATA部分的内容实际上是XML,而且绝对不是 - 因为它在CDATA部分只是文本。
为了处理嵌入式javascript(对我而言似乎风险较小),您还需要创建一个修改过的语法高亮显示器。开始寻找有关如何执行此操作的信息的好地方是vim的XHTML语法高亮显示器 - 支持嵌入式语言
答案 2 :(得分:0)
这是不可能的。
我已经将这个问题保持开放9个月而没有任何进展,我自己的研究发现没什么用处。因此,我别无选择,只能断言它根本不可能。