vim传统的插件组织形式是将插件分拆为几个部分分别放到不同的目录,如下:
(1)~/.vim/colors/
Vim将会查找~/.vim/colors/mycolors.vim并执行它。这个文件应该包括生成你的配色方案所需的一切Vimscript命令。
(2)~/.vim/plugin/
~/.vim/plugin/下的文件将在每次Vim启动的时候执行。这里的文件包括那些无论何时,在启动Vim之后你就想加载的代码。
(3)~/.vim/ftdetect/
~/.vim/ftdetect/下的文件在每次你启动Vim的时候也会执行。ftdetect是"filetype detection"的缩写。这里的文件仅仅负责启动检测和设置文件的filetype类型的自动命令。这意味着它们一般不会超过一两行。
(4)~/.vim/ftplugin/
~/.vim/ftplugin/下的文件则各不相同。一切皆取决于它的名字!当Vim把一个缓冲区的filetype设置成某个值时,它会去查找~/.vim/ftplugin/下对应的文件。比如:如果你执行set filetype=derp,Vim将查找~/.vim/ftplugin/derp.vim。一旦文件存在,Vim将执行它。
Vim也支持在~/.vim/ftplugin/下放置文件夹。例如set filetype=derp将告诉Vim去执行~/.vim/ftplugin/derp/下的全部*.vim文件。这使得你可以按代码逻辑分割在ftplugin下的文件。
因为每次在一个缓冲区中执行filetype时都会执行这些文件,所以它们只能设置buffer-local选项!如果在它们中设置了全局选项,所有打开的缓冲区的设置都会遭到覆盖!
(5)~/.vim/indent/
~/.vim/indent/下的文件类似于ftplugin下的文件。加载时也是只加载名字对应的文件。
indent文件应该设置跟对应文件类型相关的缩进,而且这些设置应该是buffer-local的。
是的,你当然可以把这些代码也一并放入ftplugin文件,但最好把它们独立出来,让其他Vim用户理解你的意图。这只是一种惯例,不过请尽量体贴用户并遵从它。
(5)~/.vim/compiler/
~/.vim/compiler下的文件非常类似于indent文件。它们应该设置同类型名的当前缓冲区下的编译器相关选项。
(6)~/.vim/after/
~/.vim/after文件夹有点神奇。这个文件夹下的文件会在每次Vim启动的时候加载,不过是在~/.vim/plugin/下的文件加载了之后。
这允许你覆盖Vim的默认设置。实际上你将很少需要这么做,所以不用理它,除非你有"Vim设置了选项x,但我想要不同的设置"的主意。
(7)~/.vim/autoload/
~/.vim/autoload文件夹就更加神奇了。事实上它的作用没有听起来那么复杂。
简明扼要地说:autoload是一种延迟插件代码到需要时才加载的方法。我们将在重构插件的时候详细讲解并展示它的用法。
(8)~/.vim/doc/
最后,~/.vim/doc/文件夹提供了一个你可以放置你的插件的文档的地方。 Vim对文档的要求是多多益善(看看我们执行过的所有:help命令就知道),所以为你的插件写文档是重要的。
备注:使用vim插件管理器(例如Vundle)来管理各种插件,就会不那么复杂了。
学习资料参考于:
http://learnvimscriptthehardway.onefloweroneworld.com/chapters/42.html