2

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

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

4

4 回答 4

5

:help load-plugins概述了插件的加载方式。

单独添加一个文件夹是rtp不够的;它必须有一个plugin子目录。例如,给定:set rtp+=/tmp/foo的文件/tmp/foo/plugin/bar.vim将被检测并加载,但既/tmp/foo/plugins/bar.vim不会也/tmp/foo/bar.vim不会。

于 2013-06-15T23:37:42.263 回答
3

你在正确的轨道上,set rtp+=...但它有更多的东西(rtp非递归,帮助索引,许多极端情况)而不是你看到的,所以你自己做不是一个好主意。除非你准备好迎接长达数月的生产力下降。

如果您想将所有插件存储在一个特殊的目录中,您应该使用适当的runtimepath/plugin-management 解决方案。我建议Pathogen ( -manager rtp) 或Vundle (plugin-manager),但还有很多其他的。

于 2013-06-16T05:13:02.970 回答
2

除了@Nikita Kouevda 回答:修改rtp事件FileType可能为时已晚,vim 无法从修改后的运行时路径加载任何插件:如果此事件是在获取 vimrc 后启动的,则不保证会加载新添加的插件;如果此事件在VimEnter事件之后启动,则保证不会自动获取来自新添加的插件。

如果您只想在编辑 python 文件时使用:au FileType python :source ~/.vim/macros/autoclose.vim自动关闭(注意:macros或任何其他子目录,除了在运行时路径中找到的plugin目录$VIMRUNTIME或什至在运行时路径中找不到的任何目录)。

如果您只想在编辑 python 文件时使用自动关闭,您应该查看插件源和文档,插件方面必须支持它才能工作。

// 或者,如果 autoclose 不支持这一点,使用:au FileType上面段落中的命令,但在前面source加上一些记录 vim 状态(命令、映射和自动命令)的东西,在后面附加相同source的内容,找出状态的差异并删除每个:au BufEnterif上的差异文件类型不是 python 并以其他方式恢复它们:hacky 并且可能会引入奇怪的错误。可以在此处找到状态记录和差异确定代码的示例。

于 2013-06-16T10:14:47.473 回答
1

(runtimepath) 选项中的所有文件夹都需要与您的(通常是)rtp具有相同的文件夹结构。所以它应该具有相同的子目录名称,例如, , (无论您需要什么,但具有相同的名称是关键)。插件应位于其相应的子目录中。$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

于 2013-06-16T09:46:35.567 回答