我试图将autoclose.vim
安装到Vim。我注意到我没有~/.vim/plugin
文件夹,所以我不小心制作了一个~/.vim/plugins
文件夹(注意插件中的额外's')。然后我将au FileType python set rtp += ~/.vim/plugins
添加到我的.vimrc中,因为根据我的阅读,这将允许我自动获取该文件夹中的脚本。
在我意识到自己的错误并从'插件'中取出额外的's'之前,插件没有为我加载。我很困惑,因为我的运行时路径中甚至没有定义这个新路径。我基本上想知道为什么插件在~/.vim/plugin
中加载而不在~/.vim/plugins
时加载?
答案 0 :(得分:5)
:help load-plugins概述了如何加载插件。
单独向rtp
添加文件夹是不够的;它必须有一个plugin
子目录。例如,给定:set rtp+=/tmp/foo
,将检测并加载文件/tmp/foo/plugin/bar.vim
,但/tmp/foo/plugins/bar.vim
和/tmp/foo/bar.vim
都不会。
答案 1 :(得分:3)
你使用set rtp+=...
走在正确的轨道上但是还有更多内容(rtp
是非递归的,帮助索引,很多极端情况)而不是满足眼睛所以它不是非常好的主意,你自己做。除非你准备好长达数月的生产力下降。
如果要将所有插件存储在特殊目录中,则应使用正确的runtimepath
/插件管理解决方案。我建议Pathogen(rtp
- 经理)或Vundle(插件管理员),但还有很多其他人。
答案 2 :(得分:2)
除了@Nikita Kouevda回答:在rtp
事件上修改FileType
对于vim加载来自修改后的运行路径的任何插件可能为时已晚:如果此事件是在vimrc来源之后启动的,那么它是将无法保证新添加的插件;如果此事件是在VimEnter
事件之后启动的,则可以保证新添加的插件将不自动获取。
如果您只想在编辑python文件时 source autoclose,您应该使用:au FileType python :source ~/.vim/macros/autoclose.vim
(注意:macros
或除plugin
以外的任何其他子目录和目录在$VIMRUNTIME
中找到,甚至在runtimepath中找不到任何目录。
如果您只想在编辑python文件时使用 autoclose,您应该查看插件源和文档,插件方面必须支持它才能工作。
//或者,如果autoclose不支持此功能,请使用上面段落中的:au FileType
命令,但在source
前加上记录vim状态(命令,映射和自动命令)的内容,在{之后追加相同内容{1}},找出状态的差异,并删除每个source
上的差异,如果filetype不是python,否则还原它们:hacky并可能引入奇怪的错误。可以找到状态记录和差异确定代码的示例here。
答案 3 :(得分:1)
rtp
(runtimepath)选项中的所有文件夹都需要与$VIMRUNTIME
具有相同的文件夹结构($VIMRUNTIME
通常为/usr/share/vim/vim{version}
)。所以它应该具有相同的子目录名称,例如autoload
,doc
,plugin
(无论您需要哪个,但具有相同的名称是关键)。插件应该在相应的子目录中。
假设您有/path/to/dir
(在您的情况下是~/.vim
)在rtp
,vim
将
/path/to/dir/plugin
/path/to/dir/ftplugin
/path/to/dir/syntax
/path/to/dir/doc
依旧......
vim
仅在/path/to/dir
中查找几个已识别的子目录†。如果您有一些无法识别的子目录名称(如/path/to/dir/plugins
),则vim
将无法看到它。
†“已识别”此处表示可以在/usr/share/vim/vim{version}
或安装vim
的任何位置找到同名的子目录。