有没有办法在Vim中定义一个基本上是其他语法文件之上的“元”层的语法文件?我的意思是该文件定义语法高亮区域,但它为每个区域所做的只是指定要应用于该区域的不同语法文件。这对嵌入HTML的PHP或任何其他类型的文件混合语言非常有用。我知道有一些脚本可以同时处理PHP和HTML,但我不认为它们是按照我描述的方式进行的。我对这个问题的一般解决方案感兴趣。
答案 0 :(得分:1)
那是:syntax include
的用途。有了它,您可以在缓冲区中标记某些区域,并在其中应用从属语法。只要这些区域明确划界并且不混合,这就非常有效。这在HTML语法中用于在<script>
标记内包含JavaScript,Vimscript将其用于Perl,Python和其他集成语言。您可以在$VIMRUNTIME/syntax/
找到这些脚本。
我的SyntaxRange plugin提供了一种不同的方法,您可以使用其他语法突出显示某些区域,而无需定义单独的新语法。这用于更多的adhoc标记,例如突出显示HTML博客文章中的Python代码段,或自动突出显示电子邮件正文中的内联修补程序。
最后,有一些附加语法可以在#34;顶部&#34;一个主要的语法。一个例子是cpp.doxygen
。但是,你不能用任意语法来做到这一点;必须专门编写脚本以支持该脚本。