2

我为自己编写了一个(基本)vim 插件,但我很难组织它。现在,它存在于两个文件中:一个 in一个syntax/in ftplugin/(两者都在bundle/<plugin name>.

到目前为止,:set ft=<existing filetype>.<new filetype>在每个文件中做类似的事情都是可行的,但我不知道如何(一致地)从我的 .vimrc 中做到这一点。

所以,两个问题:

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

1 回答 1

3

尽管您没有包含很多细节,但您是对的,其中syntax/包含语法定义(即主要是:syntax命令)并且ftplugin/用于特定于文件类型的设置(即主要是:setlocal,:map <buffer>等)。

我希望该插件可用于各种文件类型,包括那些具有现有语法文件的文件。

正确的方法很大程度上取决于原始语法和您的语法之间的关系。很难扩展任意语法,因为您必须考虑重叠并containedin=...在语法扩展中使用适当的说明符。

复合文件类型:setl filetype=c.doxygen自动检测或手动设置时效果很好。如果您不希望扩展名如此可见(并且某些插件不能很好地处理复合文件类型),您可以选择:runtime syntax/mine.vim在所有~/.vim/after/syntax/original.vim文件中(并对ftplugin/.

另一种选择是连接到:autocmd Syntax ...and :autocmd FileType ...; :runtime这避免了编写许多仅包含您的语法/ ftplugin 添加的短存根文件。

于 2013-06-12T13:33:50.773 回答