我为自己写了一个(基本的)vim插件,我很难组织它。现在,它有两个文件:一个在syntax/
中,一个在ftplugin/
中(两个都在bundle/<plugin name>
。我希望插件对各种文件类型都有效,< strong>包括具有现有语法文件的那些。
到目前为止,在每个文件中执行类似:set ft=<existing filetype>.<new filetype>
的操作,但我无法弄清楚如何(一致地)从我的.vimrc中执行此操作。
所以,有两个问题:
filetype
的“正确”方法是什么?答案 0 :(得分:3)
虽然您没有包含大量详细信息,但您在syntax/
包含语法定义(即大多数:syntax
命令)并且ftplugin/
适用于:setlocal
特定于文件类型的设置(即主要是:map <buffer>
,containedin=...
等。)
我希望该插件可以用于各种文件类型,包括那些具有现有语法文件的文件。
正确的方法很大程度上取决于原始语法与您的语法之间的关系。扩展任意语法很困难,因为您必须考虑重叠并在语法扩展中使用适当的:setl filetype=c.doxygen
说明符。
复合文件类型 :runtime syntax/mine.vim
在自动检测或手动设置时效果很好。如果您不希望扩展程序如此可见(并且某些插件不能很好地处理复合文件类型),您可以在所有~/.vim/after/syntax/original.vim
个文件中ftplugin/
(并执行相同操作) :autocmd Syntax ...
)。
另一种选择是挂钩:autocmd FileType ...
和:runtime
;这样可以避免编写许多仅仅{{1}}语法/ ftplugin添加的短文本文件。