vim插件管理器有什么区别?


Answers:


142

vim-plug是Vundle的一个不错的替代品,它从技术的角度来看应做些不同,这应该使其速度更快(请参阅此内容)。它具有Vundle的大多数(或全部?)功能。

  • Vim的并行更新过程与任何的+ruby+python或Neovim。如果没有可用的方法,则使用Vimscript退回到顺序模式。
  • 延迟加载,以加快启动速度(请参阅)。
  • 安装插件。
  • 更新插件。
  • 查看/回滚更新。
  • 支持OSX,Linux和UNIX系统以及MS Windows。
  • 更新后挂钩,例如自动重新编译YCM

要开始使用它:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

在您的vimrc中:

call plug#begin()
Plug 'tpope/vim-sensible'

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
call plug#end()

然后发出命令

:PlugInstall

安装列出的插件。


1
感谢您的推荐;在此之前,我一直拒绝加载器,因为我喜欢加载时的zippy。我必须研究的一件显而易见的事情是:PlugInstall使用一个新插件。甚至官方文档也掩盖了这一点。
msw 16年

7
虽然我喜欢vim-plug,但要知道它会更改一些vim默认值,您可能会感到惊讶/令人困惑github.com/junegunn/vim-plug/issues/379
laktak 2016年

对于Windows,vim具有文件夹vim 版本号,例如vim 8.1的vim81。在使用curl的第一步中,请确保文件夹为..\vim81\autoload\..not ..\.vim\autoload\..
斯蒂芬·雅各布

56

病原很简单。本质上,它只是这样做:

  • 从文件夹自动加载插件
  • 为这些插件生成帮助标签

优点:

  • 极简主义

缺点:

  • 其他所有手动操作(安装,更新,删除等)
  • 没有延迟加载

要安装它,请下载pathogen.vim~/.vim/autoload

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

并添加到您的.vimrc

call pathogen#infect()
call pathogen#helptags() "If you like to get crazy :)

如果您不喜欢发疯,请仅:Helptags在需要时致电。

然后将插件添加到中~/vim/bundle


20
需要明确的是,病原体不是插件管理器。它所做的只是管理运行时路径。而已。您添加到〜/ .vim / bundle的任何插件(即默认位置,您可以更改此位置),它将插件的文件添加到vim的运行时路径,以便可以访问它们。如果您没有安装那么多插件,则手动安装,更新,删除并不是一个真正的缺点。另外,在更新插件时,您可以选择仅获取更改的一部分,而不更新到插件的最新版本,这给了您很多控制权。
akshay 2015年

1
@AkshayHegde是的,一旦我开始编写Vundle答案,我就必须返回并从该答案中编辑出“插件管理器”。关于缺点的意见,这就是为什么我继续使用它而不是其他任何东西的原因。
muru 2015年

1
vim-大流行是病原体的一个很好的补充。它处理插件背后的远程存储库,由Pathogen处理运行时路径。这确实意味着需要两个工具,但是对于“应该”分别处理的不同任务。我发现最令人信服的Pathogen + Pandemic的优点是:无需为捆绑软件处理git子模块。
jalanb 2015年

2
我使用病原体作为插件加载器。但是我使用git子模块来控制各个插件的版本。因此,其极简方法非常适合我的用例。其他管理员如何处理版本和插件更新。
马丁·约克

2
@JaDogg哦,那是自述文件:“通常,Vim希望您在带有文档的每个目录上运行:helptags(例如::helptags〜/ .vim / doc)。病原体提供了。在“运行时路径”中的每个目录上。如果您真的想发疯,甚至可以在vimrc中调用Helptag。我不喜欢发疯。我想说的是,如果您有很多插件,这可能会减慢启动速度。而且,您实际上不需要每次启动时都运行它,每个插件安装/升级一次就足够了。
muru

43

Vundle更复杂。它是软件包管理器,aptyum用于插件。它可以:

  • 搜索插件索引
  • 更新插件
  • 自动生成帮助标签
  • 在自动加载文件夹中保留但不使用插件
  • 清理掉这些未使用的插件
  • 适用于Linux,OSX和MS Windows

安装:

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

然后添加到您的.vimrc

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" more Plugin commands
" ...
call vundle#end()            " required
filetype plugin indent on    " required

要安装插件,请使用中的Plugin命令.vimrc(有关Github自述文件的更多示例):

" plugin on Github
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'

然后:PluginInstall.vim(或vim +PluginInstall +qall)致电。


您链接到的NeoBundle自述文件说,该项目现在已过时,取而代之的是github.com/Shougo/dein.vim
Jonathan Hartley

@JonathanHartley是“黑暗”动力的吗?我想我应该已经看到了。
muru

13

dein.vim:作为该问题的后续,我将在此处添加由著名的Shougo制作的插件管理器。

根据自述文件,该插件具有以下依赖性:

  • Vim >7.4 or neovim:尽管保持Vim为最新是一件好事,但对于某些用户而言,不支持以前的版本可能会出现问题
  • git:对于包管理器来说很常见
  • rsync:不像git那样常见

作者声称它比NeoBundle更快。基准可以在项目的自述页上找到

此插件管理器的一个原始概念是它不提供任何命令,而仅提供功能:例如,要更新插件,您不能使用:PlugUpdate,而必须调用::call dein#update()。老实说,我还没有找到这种设计选择的例证。

另外,有人创建了一个提供这些“缺失”命令的插件。我不知道这是一个好主意还是与插件管理器的主要思想背道而驰,但作者在doc文件的FAQ中提到了它。

Dein.vim支持从Github(从vimscript.org方便地访问插件)和本地目录中获取插件。

插件管理器提供了一些经典功能,例如更新和禁用插件。它还允许在安装时执行挂钩。

请注意,根据FAQ,您似乎必须手动构建其安装的插件的帮助标签

有趣的一点是,作者希望dein.vim易于测试和维护,因此存储库还包含一些测试脚本。

最后,我想说这个插件管理器似乎设计得轻巧,快速,这很有趣,但是我认为它比例如vim-plugVundle更加不友好


哦,还有,寿果将dein.vim描述为“黑暗动力Vim / Neovim插件管理器”,如果有人知道这意味着什么,请随时编辑此答案:我很好奇;-)


1
“黑暗供电”是您将在Shougo的vim插件中找到的短语,该插件具有支持或仅用于NeoVim。
Yonsy Solis 2016年

8
我认为“深色驱动”一词来自“ Light Vim用户”-仅使用默认功能的用户和“ Dark Vim用户”-尝试将其用作IDE或至少使用许多插件且具有很多功能的用户行添加到其vimrc文件中(在Shougo的演示文稿中,有关此内容的更多信息-slideshare.net/Shougo/lets-talk-about-neovim-幻灯片6)
lewiatan

1
@lewiatan:谢谢,我认为您得到了正确的答案。(有趣的
寿吾

1
@statox Shougo 指出:“ Dein.vim还会减少命令的使用以支持函数调用,这也可能有助于提高性能(不过我不确定)。”
Alexej Magura

1
@ statox,Lulz,没有那些可能不是Shougo的话,那么,我还没有意识到那不是他的博客。
Alexej Magura

13

Vim 8.0和Neovim都有自己的内置软件包管理器。在Vim 8.0中,创建以下目录: .vim/pack/*/start,其中*您要使用的任何名称;在哪里?例如.vim/pack/jimmy/start

就像使用病原体一样,将插件克隆到开始目录中。

使用Neovim时,目录要冗长一些:

.local/share/nvim/site/pack/*/start。从那里执行与Vim相同的操作。

完全不需要另一个插件管理器。

在Vim或Neovim中,运行:h packages更多细节。阅读有关颜色的部分,因为它们虽然不多,但有所不同。您.vimrc或您的nvim/init.vim文件中不需要任何其他说明。

希望能有所帮助。


8

我特别喜欢VAM的自我部署功能:您需要的只是您自己的.vimrc,然后启动vim。

因此,您不需要To Install其他大多数插件管理器使用的代码行(安装插件管理器本身的第一步)。


6

就我而言,我希望使用我用来支持依赖项的插件管理器。

原因是我要维护几个插件,并且相互之间有很多依赖关系:所有人都使用通用库,C ++套件使用模板/代码片段引擎,重构插件也使用ctags库插件, 等等。在我看来,要求最终用户执行最多10行来安装他们感兴趣的插件,这并不是一个好的解决方案。

到目前为止,我只知道两个这样的插件:vim-addon-managerNeoBundle。在vim官方邮件列表上进行了许多交流之后,VAM将其数据库代码分叉给了vim-pi。这个想法是NeoBundle(以及其他对管理依赖项感兴趣的插件)最终可以利用vim-pi。

我最近遇到了也可以处理依赖项的vim-flavor。在主题上,它会检查插件版本以安装正确的插件版本。

注意:自从我最初回答以来,

  • NeoBundle的开发已经停止;
  • 尽管vim-pi会通过vim.org上的插件定期更新其数据库,并且仍可以使用VAM来表达依赖关系,但似乎不再可能在vim-pi数据库中添加别名:MR / PR不再合并

AFAIK,这些插件都不在后台/并行中克隆/安装/更新插件。老实说,由于我没有安装新的vim环境,也没有更新我每月安装一次的插件,所以我不在乎。它们当然会更新'helptags',照顾'rtp'等等。


vim-plug的自述文件中有一个示例说“组依赖关系”。您是否尝试过,或者与VAM / NeoBundle的方法不同?
muru

我错过了vim-plug文档中的组依赖关系。我确实看到他们已经从代码库中删除了支持依赖项的尝试。关于组依存关系,我看不出它有什么帮助。最终用户不应该声明依赖关系。它们应由插件编写者声明。如果您通过lh-cpp插件查看并仔细查看,您会发现依赖关系不是线性的。这是一个有向图,它必须是非循环的,以避免出现问题。
卢克·赫米特

到目前为止,我已经使用VAM十多年了,对此我感到很满意。但是,我使用了vim-flavor,因为从travis集成起来要简单得多,以便测试我的插件。不幸的是,两者都使用不同的语法来声明依赖关系。
卢克·赫米特

1
仅供参考:NeoBundle的开发已停止(自2016年2月23日起)。它推荐其后继者Dein.vim(由同一作者)。
Peter V.Mørch17年

3

这些插件管理器中的大多数在管理插件方面做得很出色,但让vimrc您管理麻烦。如果您有多台计算机,并且希望在同一台计算机上进行配置,那么Vire会非常简单。您不需要git或弄清楚子模块,也不需要任何额外的工作即可进行设置或迁移。

  • 安装Python,这是大多数现代Vim插件的编写方式,无论如何都需要
  • pip install vire
  • 将您现有的内容vimrc作为要点发布到Github上并进行维护
  • 如果在Windows上,则vire -i安装最新的Vim或(带有的Neovim -i -n
  • 删除所有现有的插件函数调用,并定义注释掉的调用以安装任何插件 " Plug 'tpope/vim-unimpaired'
  • vire gistID

然后,vire只要您想vimrc更新您的或插件或与之-i一起更新应用程序,就可以随时运行。

Vire利用Vim / Neovim的pack功能来加载插件。您也可以继续使用现有的插件管理器,但如果需要,可以使用Vire仅安装Vim vimrc,以及插件管理器本身。


1

对于想要使用Pathogen的完整插件管理器的人,还有apt-vim。您可以使用curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh (如此处所述:https : //www.linuxsecrets.com/1715-vi-editor-tips-trick-and-secrets-into-the-vi-vim-editor-part-ii )进行安装。安装完成后,您只需键入apt-vim install后跟软件包存储库的名称即可,类似于Ubuntu apt软件包管理器。


1
这本质上是仅链接的答案。如果您可以详细了解如何安装和使用apt-vim,则可以接受。
Tumbler41年

我更新了。确实,我认为这应该是有关Pathogen的帖子的评论,但我没有足够的要发表的观点
Melanie Day

1
链接缺失到插件。还是一个建议的插件curl URL |sh。我绝不建议任何人从Internet运行一些随机代码。确实,这是一个不好的安全习惯。
克里斯汀·布拉班德

0

我一直在寻找一种使用方式,pathogen但需要轻松更新并使其可移植,因此bash脚本(使用vim-plug功能)可能会有所帮助-

#!/bin/sh

# inspired by https://github.com/thoughtbot/dotfiles/blob/master/hooks/post-up

if [ ! -e "$HOME"/.vim/autoload/pathogen.vim ]; then
  curl -fLo "$HOME"/.vim/autoload/pathogen.vim --create-dirs \
      https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
fi

if [ -e "$HOME"/.vim/autoload/plug.vim ]; then
  vim -E -s +PlugUpgrade +qa
else
  curl -fLo "$HOME"/.vim/autoload/plug.vim --create-dirs \
      https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
fi
vim -u "$HOME"/.vimrc.bundles +PlugUpdate +PlugClean! +qa

再举一个例子.vimrc.bundle-

"installed via the Githubs
call plug#begin('~/.vim/bundle')
Plug 'bling/vim-airline'
Plug 'scrooloose/syntastic'
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fireplace'
Plug 'vim-scripts/paredit.vim'
" etc

call plug#end()

"disable vim-plug sugar-- actual config should be set via .vimrc
filetype plugin indent off 
syntax on

1
您可以为此添加一些详细信息吗?OP提出的主要问题是:“有人可以简要概述[在软件包管理器中]的区别,以便我可以决定哪种方法最适合我”吗?您的提交内容如何帮助您回答?您到底要添加哪些没有的病原体?那种事
B层
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.