2013-02-26 24 views
1

我想扩展现有的文件类型的文件类型的语法和高亮。我的新文件语法的基本结构如下:扩展VIM文件的语法到另一个文件类型不工作

" Some local (new) syntax that I want to match 
syn match upfOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]" 
syn match upfDefines "\$\S\+" 
syn match upfDefines "\${\S\+}" 
syn match upfParens "[)(}{\[\]]" 

" load syntax that I want to extend. This contains it's own highlight commands 
runtime syntax/dtcl.vim 

" New highlight statements 
hi link upfOperator   Statement 
hi link upfDefines   Constant 
hi link upfParens   Constant 

的问题是,所有包含在dtcl.vim文件语法不突出。我可以打开一个dctl文件并突出显示。但是,当我打开另一个文件类型(* .upf)时,upf.vim被加载,但不是dtcl.vim。

的dctl.vim不具有会导致文件不加载任何“如果语法定义的”类型的命令。

回答

2

如果dctl.vim是一个正确的Vim语法脚本,它会清除任何现有的语法项(:syntax clear),因为所有语法都应该是这样。因此,您必须将自己的upf...定义移动到:runtime以下。

正确加载现有的语法,你应该使用下面的命令:

runtime! syntax/dctl.vim syntax/dctl/*.vim 

:runtime syntax/dctl.vim只考虑第一次出现没有语法扩展。除此之外,只要您只添加一些尚未涵盖的新语法元素(如果它们是,您可能需要在您的中使用containedin=...),除此之外,我认为您的方法没有问题。您可以使用:syn list命令来检查实际定义的内容。

相关问题