繁体   English   中英

Vim插件并不总是加载?

[英]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会的。

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

如果要将所有插件存储在特殊目录中,则应使用正确的runtimepath / plugin-management解决方案。 我建议使用Pathogenrtp -manager )或Vundle (插件管理器),但还有很多其他的。

除了@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} )。 因此它应该具有相同的子目录名称,例如autoloaddocplugin (无论您需要哪个,但具有相同的名称是关键)。 插件应该在它们相应的子目录中。

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

  • /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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM