Vim插件并不总是加载?

时间:2013-06-15 23:28:45

标签: python vim plugins

我试图将autoclose.vim安装到Vim。我注意到我没有~/.vim/plugin文件夹,所以我不小心制作了一个~/.vim/plugins文件夹(注意插件中的额外's')。然后我将au FileType python set rtp += ~/.vim/plugins添加到我的.vimrc中,因为根据我的阅读,这将允许我自动获取该文件夹中的脚本。

在我意识到自己的错误并从'插件'中取出额外的's'之前,插件没有为我加载。我很困惑,因为我的运行时路径中甚至没有定义这个新路径。我基本上想知道为什么插件在~/.vim/plugin中加载而不在~/.vim/plugins时加载?

4 个答案:

答案 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 /插件管理解决方案。我建议Pathogenrtp - 经理)或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})。所以它应该具有相同的子目录名称,例如autoloaddocplugin(无论您需要哪个,但具有相同的名称是关键)。插件应该在相应的子目录中。

假设您有/path/to/dir(在您的情况下是~/.vim)在rtpvim

  • /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的任何位置找到同名的子目录。