我一直在寻找不同的vim软件包管理器,而我决定使用vim-plug,但我看到过其他诸如病原体和vundle的软件包,老实说,我不知道有什么区别。
有人可以简要介绍一下这些区别,以便让我确定最适合我的吗?
我一直在寻找不同的vim软件包管理器,而我决定使用vim-plug,但我看到过其他诸如病原体和vundle的软件包,老实说,我不知道有什么区别。
有人可以简要介绍一下这些区别,以便让我确定最适合我的吗?
Answers:
vim-plug是Vundle的一个不错的替代品,它从技术的角度来看应做些不同,这应该使其速度更快(请参阅此内容)。它具有Vundle的大多数(或全部?)功能。
+ruby
,+python
或Neovim。如果没有可用的方法,则使用Vimscript退回到顺序模式。要开始使用它:
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
安装列出的插件。
:PlugInstall
使用一个新插件。甚至官方文档也掩盖了这一点。
..\vim81\autoload\..
not ..\.vim\autoload\..
。
病原很简单。本质上,它只是这样做:
优点:
缺点:
要安装它,请下载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
。
Vundle更复杂。它是软件包管理器,apt
或yum
用于插件。它可以:
安装:
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
)致电。
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-plug或Vundle更加不友好。
哦,还有,寿果将dein.vim描述为“黑暗动力Vim / Neovim插件管理器”,如果有人知道这意味着什么,请随时编辑此答案:我很好奇;-)
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
文件中不需要任何其他说明。
希望能有所帮助。
就我而言,我希望使用我用来支持依赖项的插件管理器。
原因是我要维护几个插件,并且相互之间有很多依赖关系:所有人都使用通用库,C ++套件使用模板/代码片段引擎,重构插件也使用ctags库插件, 等等。在我看来,要求最终用户执行最多10行来安装他们感兴趣的插件,这并不是一个好的解决方案。
到目前为止,我只知道两个这样的插件:vim-addon-manager和NeoBundle。在vim官方邮件列表上进行了许多交流之后,VAM将其数据库代码分叉给了vim-pi。这个想法是NeoBundle(以及其他对管理依赖项感兴趣的插件)最终可以利用vim-pi。
我最近遇到了也可以处理依赖项的vim-flavor。在主题上,它会检查插件版本以安装正确的插件版本。
注意:自从我最初回答以来,
AFAIK,这些插件都不在后台/并行中克隆/安装/更新插件。老实说,由于我没有安装新的vim环境,也没有更新我每月安装一次的插件,所以我不在乎。它们当然会更新'helptags'
,照顾'rtp'
等等。
vim-plug
的自述文件中有一个示例说“组依赖关系”。您是否尝试过,或者与VAM / NeoBundle的方法不同?
这些插件管理器中的大多数在管理插件方面做得很出色,但让vimrc
您管理麻烦。如果您有多台计算机,并且希望在同一台计算机上进行配置,那么Vire会非常简单。您不需要git或弄清楚子模块,也不需要任何额外的工作即可进行设置或迁移。
pip install vire
vimrc
作为要点发布到Github上并进行维护vire -i
安装最新的Vim或(带有的Neovim -i -n
)" Plug 'tpope/vim-unimpaired'
vire gistID
然后,vire
只要您想vimrc
更新您的或插件或与之-i
一起更新应用程序,就可以随时运行。
Vire利用Vim / Neovim的pack
功能来加载插件。您也可以继续使用现有的插件管理器,但如果需要,可以使用Vire仅安装Vim vimrc
,以及插件管理器本身。
对于想要使用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软件包管理器。
curl URL |sh
。我绝不建议任何人从Internet运行一些随机代码。确实,这是一个不好的安全习惯。
我一直在寻找一种使用方式,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