如何在Vim / vi中安装插件?


96

如何在Vim中安装插件?

有关系吗:

  • 我使用vi还是Vim?
  • 我是否使用gVim?
  • 我正在使用哪个版本的Vim?
  • 我的操作系统是什么?

Answers:


65

要安装插件,我们需要知道它以什么形式出现。它可以是:

.vim应该在.vim/plugin目录中放置一个文件。

可以通过在Vim中打开并运行Vimball文件来安装:source %

可以通过将标准文件复制到.vim或使用插件包管理器来安装标准目录布局中的一组文件。

插件可能取决于某些功能。因此:

  • 如果您使用的是Vi或Vim,
  • 是否使用gVim可能会很重要(在同一发行版中,gVim启用的功能通常比Vim的功能更多)。
  • 您使用的是哪个版本的Vim可能很重要,因为在您的Vim版本之后可能已添加了功能。
  • 您所使用的操作系统可能很重要,特别是如果插件调用外部命令时。

但是,对于大多数插件而言,这可能并不重要。


9
如果您使用的是Vi,则绝对重要-Vi并不存在插件的概念。当然,vi在任何现代包装盒上打字都可能会在vim关闭某些功能的情况下启动。我怀疑这些天有很多人可以使用实际的 Vi。
tommcdo

37

vim插件

我喜欢使用vim-plug插件管理器。

手动安装插件的问题在于,删除插件相当困难 。您通常在不同的目录中有几个不同的文件,因此必须手动找到并删除它们。

升级问题也同样困难:如果autoload/old-name.vim重命名为autoload/new-name.vim怎么办?现在,您既有旧版本的插件,也有新版本的插件。

vim-plug通过将每个插件存储在自己的目录中解决此问题;它还包含用于轻松安装/删除插件的命令,因此您不必为插件解压缩等烦恼。

Pathogen相比,vim-plug的主要优点 是vim-plug允许您更轻松地安装和删除插件。Pathogen所做的一切就是允许每个插件位于单独的包含目录中。

vim-plug依赖git ; 对于MS Windows,您需要 msysgit

您可以在vimrc中定义插件,如下所示:

call plug#begin('~/.vim/plugged')

" For MS Windows, this is probably better:
"call plug#begin('~/vimfiles/plugged')

Plug 'embear/vim-localvimrc'
Plug 'kchmck/vim-coffee-script'
" ... etc

call plug#end()

然后重新启动Vim,然后使用以下命令安装插件:

:PlugInstall

这会将插件放入MS Windows ~/.vim/plugged$HOME\vimfiles\plugged用于Windows。

您可以在调用之前将FAQ中的此代码段添加 到vimrc文件中plug#begin()

if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall
endif

请注意,您需要curl执行此操作。在Linux和OSX上几乎总是可用,但在MS Windows上却不可用。所以这个技巧在那儿行不通...

要删除插件,请将其从vimrc文件中删除并运行:

:PlugClean

请注意,vim-plug不支持从Vim脚本网站安装脚本,但是这些脚本已镜像到GitHub,因此无需这样做。

这样做还具有其他一些优点,例如,更容易更新插件以及按需加载以提高性能。您还可以轻松地将vimrc复制到另一台计算机上,运行:PlugInstall,并拥有所有插件。

请注意,还有更多的插件管理器;我碰巧用了vim-plug。另请参见:vim软件包管理器之间有什么区别?


1
vim-plug具有的其他最重要的优点之一是插件的并行安装/更新
r3bo0t

“这些脚本已在GitHub上镜像,因此无需这样做。” 不幸的是,刮板很久以前就停止工作了。github.com/vim-scraper/vim-scraper/issues/…–
Bluu

@Bluu是的,我去年联系了那个维护者;有一些技术需要更新,没有人真正加紧进行更新:-/尽管它仍然有些有用,因为许多脚本并非经常更新(尤其是那些不在GitHub上的脚本)。
马丁·图尔诺伊

25

病原

Pathogen是一个运行时路径管理器,可在Vim中加载插件。它使插件安装变得简单。运作方式如下:

注意:如果您使用的是Windows,请替换~/.vim$HOME\vimfiles

  1. 复制pathogen.vim~/.vim/autoload/pathogen.vim

  2. 创建~/.vim/bundle目录(如果尚不存在)。

  3. 将以下行添加到您的开始.vimrc

    execute pathogen#infect()
    
  4. 你完成了!当您要添加插件时,只需将整个插件的目录复制到~/.vim/bundlegit clone在其中。例如:

    cd ~/.vim/bundle
    git clone https://github.com/tpope/vim-surround
    
  5. *警告:如果您的插件以.vim文件形式出现,则它不适用于Pathogen。将其复制到~/.vim/plugin(如果不存在,则可能必须创建此目录)。


5
注意:病原体不是插件管理器。
romainl

或者git submodule add(而不是git clone)(如果您的vim配置已经是您自己的git项目的一部分)。
马丁·约克

@romainl那是什么?
RodrikTheReader

3
这是一个运行时路径管理器。因为它管理runtimepath选项,仅此而已。它根本不涉及更新,添加,检索,删除插件。
romainl

1
另请参阅@romainl 关于使用病原菌的出色要点
icc97 '18 -10-5

23

Vim 8+ / Neovim

版本8引入了一种新的包机制,该机制在撰写本文时(2017年)基本取代了对现有插件管理器(病原体,vim-plug,vundle等)的需求。

文档中

Vim 软件包是一个包含一个或多个插件的目录。

软件包目录包含两个子目录:

  • start/ -包含将自动加载的插件
  • opt/ -包含按需加载的插件 :packadd

看起来似乎有点复杂,但是实际上您要做的就是在这里添加插件

                 ↓ package name
~/ .vim / pack / bundle / start / some-plugin
          ↑ packages dir          ↑ plugin dir

在Windows上:使用~\vimfiles\pack\代替~/.vim/pack/

按照惯例,我们将包名称“ bundle”用作包含所有插件的目录。您可以使用任何想要的名称,如果愿意,甚至可以将插件放在单独的软件包目录中。

示例:安装sensible.vim

mkdir -p ~/.vim/pack/bundle/start
cd ~/.vim/pack/bundle/start
git clone https://github.com/tpope/vim-sensible.git

在Windows上:使用~\vimfiles\pack\代替~/.vim/pack/

下次启动Vim时,该插件将自动加载。


3
如果.vim受版本控制,最好使用git的子模块安装插件。参见shapeshed.com/vim-packages/#adding-a-package
斯坦顿拱门

如果有基于时间的答案,那么这将是截至目前的当前公认答案。
Amin NAIRI

12

让我们不要忘记伟大而强大的Vundle

Vundle是一个完整的插件管理器,具有以下功能:

  • 搜索插件(使用:PluginSearch
  • 安装插件(使用:PluginInstall
  • 更新插件(使用:PluginUpdate
  • 管理.vimrc中的插件加载路径(只需注释掉您不想加载的插件条目)
  • 删除不再需要的插件(使用:PluginClean

如您所见,它很像Carpetsmoker提到的vim-plug Manager。我不知道哪一个最先出现,但是它们的API和我的设置非常相似,设置过程也是如此


关于Vundle的好处是类似于vim-plug,您可以将所有插件存储在中.vimrc,因此,在新服务器上安装时,您所需要做的就是安装Vundle + .vimrc安装所有内容。另外,您可以注释掉插件并“清理”它们,但是当您早已忘记它们的名称时,便可以在几个月或几年后对其进行注释。
icc97 '18 -10-5

另外,我喜欢Vundle,因为它相对于初学者来说比较友好。它几乎只提供一种做事方式,并且以与Sublime Text类似的方式工作。
icc97

1

您的插件很可能是单个.vim文件。

在这种情况下,我搜索了帮助并进行了尝试并找出了以下内容。在vim(命令模式)中,键入:

:set runtimepath

这将向您显示一系列目录。其中一些目录将有一个plugin子目录。plugin当从任何地方启动vim时,将任何.vim文件放在这些子目录之一中将自动加载它。

对于我来说,在Ubuntu linux上,我发现可以/usr/share/vim/vim74/plugin为所有用户安装都很好。您可能需要root权限才能将文件复制到此处(在cpmv命令前面加上sudo)。


3
恕我直言,这不是最佳做法。请注意,您拥有vim74,这意味着它是特定于版本的,因此升级到Vim 8.0将失去该插件。更多升级,证明的方式是使用/etc/vim/为(如果不存在创建它,并添加路径runtimepath,如果不提供/etc/vimrc
grodzik

3
要添加到@grodzik评论:Most likely, your plugin will be a single .vim file我不同意。绝大多数插件都带有一个.txt包含文档的文件,您需要生成标签来获取功能文档。另外,许多插件都带有autoload目录。我认为使用插件管理器比手动管理您的运行时
路径

-1 /usr/share/vim/vimXX是库存运行时,不是站点配置/插件的位置。相反,应该将站点配置/插件放置$VIM在该系统上的任何位置(请参阅参考资料:h vimfiles)。通常/usr/share/vim情况就是这样,对于Ubuntu来说就是这样,并持有指向的符号链接/etc/vim。通常,/usr/local/在软件包管理器外部进行站点配置的实际位置。请注意,Neovim使用$XDG_(CONFIG|DATA)_DIRSsite目录,为站点配置提供了更好的现成默认值。
ZeroKnight,

1

Vire利用最新的包格式来安装插件,并支持Vim和Neovim。您无需知道任何地方。只需提供vimrc,然后由Vire负责其余的工作。

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.