如何组织具有唯一语法元素的vim插件?

时间:2013-06-12 13:11:47

标签: vim vim-plugin

我为自己写了一个(基本的)vim插件,我很难组织它。现在,它有两个文件:一个在syntax/中,一个在ftplugin/中(两个都在bundle/<plugin name>。我希望插件对各种文件类型都有效,< strong>包括具有现有语法文件的那些。

到目前为止,在每个文件中执行类似:set ft=<existing filetype>.<new filetype>的操作,但我无法弄清楚如何(一致地)从我的.vimrc中执行此操作。

所以,有两个问题:

  1. 我是否有正确的组织方法?是否有更简单的方法(比如说)结合语法和插件文件?
  2. 如果是这样,添加自定义filetype的“正确”方法是什么?

1 个答案:

答案 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添加的短文本文件。