我为自己编写了一个(基本)vim 插件,但我很难组织它。现在,它存在于两个文件中:一个位于 syntax/
中。和 ftplugin/
中的一个(两者都在 bundle/<plugin name>
中。我希望该插件对各种文件类型都有效,包括那些具有现有语法文件的文件。
到目前为止,正在做类似 :set ft=<existing filetype>.<new filetype>
的事情在每个文件中都有效,但我无法弄清楚如何(一致地)从我的 .vimrc 中执行此操作。
那么,有两个问题:
- 我有正确的组织方法吗?是否有更简单的方法(例如)组合语法和插件文件?
- 如果是这样,附加我的自定义的“正确”方法是什么
filetype
?
最佳答案
虽然您没有提供很多细节,但您是对的 syntax/
包含语法定义(即主要是 :syntax
命令)和 ftplugin/
用于特定于文件类型的设置(即主要是 :setlocal
、 :map <buffer>
等)。
I would like the plugin to be active for various file types, including those with existing syntax files.
正确的方法在很大程度上取决于原始语法与您的语法之间的关系。很难扩展任意语法,因为您必须考虑重叠并使用适当的 containedin=...
语法扩展中的说明符。
复合文件类型 :setl filetype=c.doxygen
自动检测或手动设置时效果很好。如果您不希望扩展名如此明显(并且某些插件不能很好地处理复合文件类型),您也可以 :runtime syntax/mine.vim
总共~/.vim/after/syntax/original.vim
文件(并对 ftplugin/
执行相同的操作)。
另一种选择是 Hook :autocmd Syntax ...
和:autocmd FileType ...
;这可以避免编写许多短 stub 文件,这些文件只是 :runtime
您的语法/ftplugin 添加。
关于vim - 如何组织具有独特语法元素的 vim 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17066460/