我一直在寻找不同的vim软件包管理器,而我决定使用vim-plug,但我见过像病原体和vundle这样的软件包管理器,老实说,我不知道有什么区别。

有人可以简要介绍一下它们之间的区别,以便让我确定最适合我的吗?

评论

stackoverflow.com/questions/2458398/…

这不是一个答案,但可能值得考虑:SpaceVim。

#1 楼

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


+ruby+python或Neovim中的任何一个的Vim并行更新过程。如果没有可用的,则使用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


以安装列出的插件。

评论


感谢您的推荐;在此之前,我一直拒绝加载器,因为我喜欢加载时的zippy。我必须研究的一件不明显的事情是:在新插件上安装插件;甚至官方文档也掩盖了这一点。

– msw
16-10-22在14:55

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

–laktak
16 Dec 12'在19:32

对于Windows,vim具有文件夹vimversion编号,例如vim 8.1的vim81。在使用curl的第一步中,确保文件夹为.. \ vim81 \ autoload \ ..而不是.. \ .. vim \ autoload \...。

–斯蒂芬·雅各布
18年6月22日在8:40



@StephenJacob这建议您在Vim安装目录中安装一些东西(通常是\ Program Files(x86)\ vim \ vim81)...?那永远不需要被感动。一切都应安装到用户的vim树中(通常\ Users \ username \ vimfiles ...未嵌入版本号)。那是相当于〜/ .vim的窗口。

– B层
20 May 27 '21:33



#2 楼

病原很简单。从本质上说,它确实可以:


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



极简主义者

缺点:


其他所有手动完成的操作(安装,更新,删除等)
没有延迟加载
/>
要安装它,请将pathogen.vim下载到~/.vim/autoload

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


并添加到您的.vimrc中:
如果您不想发疯,请仅在需要时致电:Helptags
然后将插件添加到~/vim/bundle中。

评论


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

–akshay
2015年2月5日在3:24



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

–muru
2015年2月5日,3:30

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

–贾兰布
2015年2月9日在10:23



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

–马丁·约克
2015年2月10日,0:40



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

–muru
2015年5月27日下午4:35

#3 楼

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自述文件的更多示例):

,然后从:PluginInstall(或.vim)调用vim +PluginInstall +qall

评论


您链接到的NeoBundle自述文件说该项目现在已被弃用,转而支持github.com/Shougo/dein.vim

–乔纳森·哈特利
16 Jun 23'在2:44



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

–muru
16 Jun 23'5:36



#4 楼

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

就像使用病原体一样,将插件克隆到开始目录中。
.local/share/nvim/site/pack/*/start。从那里执行与Vim相同的操作。

根本不需要其他插件管理器。

在Vim或Neovim中,运行:h packages可获得更多详细信息。阅读有关颜色的部分,因为它们虽然不多,但有所不同。您在.vimrcnvim/init.vim文件中不需要任何额外说明。

希望有帮助。

#5 楼

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

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



Vim >7.4 or neovim:虽然保持Vim为最新是一件好事,但对于某些用户而言,不支持以前的版本可能会有问题。这对于程序包管理器来说很常见

git:它不像git

常见。作者声称它比NeoBundle更快。可以在项目的自述页面上找到一个基准。使用类似rsync之类的东西,您必须致电::PlugUpdate。老实说,我还没有找到这种设计选择的例证。

另外,有人创建了一个提供这些“缺少”命令的插件。我不知道这是一个好主意还是与插件管理器的主要思想背道而驰,但作者在doc文件的FAQ中提到了它。 Github(可从vimscript.org方便地访问插件)和本地目录。

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

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

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

最后,我想说这个插件管理器似乎旨在轻巧,快速,这很有趣,但是例如,我认为它不如vim-plug或Vundle友好。


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

评论


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

–索利斯(Yonsy Solis)
16 Sep 6 '15:19



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

– lewiatan
16年9月12日在8:56

@lewiatan:谢谢,我认为您得到了正确的答案。 (有趣的寿吾的演讲顺便说一句)

–statox♦
16年9月12日在9:14

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

–́Alexej Magura
16-10-17在15:24

Shougo关于插件的强大功能的另一句话,似乎@lewiatan是正确的:-)我认为插件的功能很强大。所以我是“黑暗” Vim大师。 Vim的标准开发者是“ Saint” Vim Master。

–statox♦
16-10-24在12:40



#6 楼

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

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

#7 楼

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

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

到目前为止,我只知道两个这样的插件:vim-插件管理器和NeoBundle。在vim官方邮件列表上进行了许多交流之后,VAM将其数据库代码分叉给了vim-pi。我的想法是NeoBundle(以及其他对管理依赖项感兴趣的插件)最终可以利用vim-pi。在这个问题上,它会检查插件版本以安装正确的插件。尽管vim-pi会通过vim.org上的插件定期更新其数据库,并且仍可以使用VAM来表达依赖关系,但似乎不再可能在vim-pi数据库中添加别名:MR / PR不再合并

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

评论


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

–muru
16-2-29在13:43

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

–卢克·赫米特(Luc Hermitte)
16-2-29在14:37

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

–卢克·赫米特(Luc Hermitte)
16-2-29在14:40



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

– Peter V.Mørch
17 Mar 27 '17 14:07



#8 楼

这些插件管理器中的大多数在管理插件方面做得很出色,但让您烦恼管理vimrc。如果您有多台计算机,并且希望使用相同的配置,那么Vire会非常简单。您不需要git或弄清楚子模块,也不需要任何额外的精力来进行设置或迁移。 /> pip install vire
将您现有的vimrc作为要点发布到Github上并进行维护
如果在Windows上,请vire -i安装最新的Vim或(带有-i -n的Neovim)
删除任何现有的插件函数调用并定义注释掉的调用以安装任何插件
" Plug 'tpope/vim-unimpaired'

vire gistID

然后,只要您希望更新vire或插件或使用vimrc更新插件,就可以运行-i

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

#9 楼

对于想要使用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软件包管理器。

评论


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

– Tumbler41
17-10-6在16:45

我更新了。确实,我认为这应该是有关病原菌的帖子的评论,但我的观点不足以发表评论

–忧郁日
17-10-6在22:55

链接缺失到插件。还是建议使用curl URL | sh的插件。我绝不建议任何人从Internet运行一些随机代码。确实,这是一个不好的安全习惯。

–克里斯蒂安·布拉班特(Christian Brabandt)
17-10-7在7:14

#10 楼

我一直在寻找一种使用pathogen的方法,但可以轻松更新并使其可移植,所以也许bash脚本可能会有用(使用vim-plug功能)-一个示例.vimrc.bundle-

#!/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


评论


您可以为此添加一些详细信息吗? OP提出的主要问题是“有人可以简要概述[包装管理器]中的区别,以便我可以决定哪种最适合我”吗?您的提交内容如何帮助您回答?您到底要添加哪些没有的病原体?那种事

– B层
17年11月12日在1:05