[英]Vim plugins don't always load?
我试图将autoclose.vim
安装到Vim。 我注意到我没有~/.vim/plugin
文件夹,所以我不小心制作了一个~/.vim/plugins
文件夹(注意~/.vim/plugins
的额外's')。 然后我将au FileType python set rtp += ~/.vim/plugins
到我的.vimrc中,因为根据我的阅读,这将允许我自动获取该文件夹中的脚本。
在我意识到自己的错误并从'插件'中取出额外的's'之前,插件没有为我加载。 我很困惑,因为我的运行时路径中甚至没有定义这个新路径。 我基本上想知道为什么插件在~/.vim/plugin
plugin中加载但在~/.vim/plugins
没有加载?
:help load-plugins概述了如何加载插件。
仅在rtp
添加文件夹是不够的; 它必须有一个plugin
子目录。 例如,给定:set rtp+=/tmp/foo
,将检测并加载文件/tmp/foo/plugin/bar.vim
,但是/tmp/foo/plugins/bar.vim
和/tmp/foo/bar.vim
会的。
除了@Nikita Kouevda之外,回答:在FileType
事件上修改rtp
可能为了让vim从修改后的运行路径加载任何插件为时已晚:如果此事件是在vimrc来源之后启动的,则无法保证将加载来自新添加的插件; 如果此事件是在VimEnter
事件之后启动的,则可以保证新添加的插件不会自动获取。
如果你想源自动关闭,只有当你编辑Python文件,你应该使用:au FileType python :source ~/.vim/macros/autoclose.vim
(注: macros
或其他任何子目录除了plugin
和目录中找到$VIMRUNTIME
甚至任何目前在runtimepath中找不到目录。
如果你只想在编辑python文件时使用 autoclose,你应该查看插件源和文档,插件方面必须有支持它才能工作。
//或者,如果autoclose不支持此功能,请使用上面段落中的:au FileType
命令,但在source
添加记录vim状态(命令,映射和自动命令)的内容,在source
后附加相同内容,找出状态差异并删除各个方面的差异:au BufEnter
如果filetype不是python而是恢复它们:hacky并且可能会引入奇怪的错误。 可以在此处找到状态记录和差异确定代码的示例。
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/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
任何位置找到同名的子目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.