Emacs 24看起来会有一个包管理器。Vim 有哪些包管理选项?
7 回答
vim 的插件管理过去是一种传统方式的痛苦,通过将插件文件分布在整个个人 vim 运行时目录中,例如。~/.vim
对于 *nix 系统。一旦安装了插件,就很难更新,因为没有简单的方法来删除过时的插件文件,这是一个必要的步骤。
在开始的时候,我想列出我个人对一个好的插件管理工具应该是怎样的要求:
- 应该用纯 VimL 编写
- 应将插件安装到自己的目录中
- vim 启动时自动加载插件,根据需要加载
- 应具有安装、更新和删除插件的内置方法
- 很高兴有一个搜索所需插件的内置方法
- 应该能够在文件中声明所需的插件
- 很高兴有依赖解决机制
那里有很多实现(Vim-Scripts.org对所有可用工具进行了全面总结),我将仅按创建顺序讨论几个主要工具。
vimball是解决这个问题的第一个尝试,实际上是一个半官方的解决方案,*.vba
很长一段时间以来,许多插件与一个包一起提供。结合GetLatestVimScripts,这形成了 vim 插件管理的传统方式。
尽管如此,问题仍然存在,直到Tim Pope的病原体(Github Repo)出现,它将每个插件放入自己的目录并在启动时通过修改 vim 的“rtp(runtimepath)”来加载它们。这是一个巨大的进步 - 结合由 git/github和其他工具(例如vimer)托管的 vim-scripts.org,它形成了管理 vim 插件的现代方式。有很多关于这个话题的文章和视频。
作为一个管理插件的插件,pathogen 仍然缺少一些核心功能,例如搜索、安装、更新和删除插件。结果,VAM(Vim-Addon-Manager) ( Github Repo ) 退出了。VAM 提供了插件管理器所需的几乎所有东西:将插件文件放在自己的目录中,在 vim 启动时加载插件,在 ex 命令行中搜索/安装/更新/删除插件,用纯 VimL 编写,维护自己的插件中央信息数据库,甚至解决插件依赖项。看起来 VAM 应该是我们作为功能齐全的 vim 插件管理器所需要的,但从我的角度来看,VAM 采用的方法有点不优雅,有时甚至过度设计。虽然它仍然是一个很棒的插件,值得使用。
然后,出现了 Tom Link 的tplugin ( Github Repo ),它通过仅在调用相关命令或函数时才加载插件来改进病原体,类似于AsNeeded。此外,它具有某种看起来不错的依赖解决机制。
Finnaly,Gmarik 创建了Vundle ( Github Repo ),它是 Tim Pope 病原体的继承者,灵感来自 Ruby 的Bundler,它提供了更好的用户界面和额外的管理功能。Vundle 与 Vim 非常相似,就像 Bundler 与 Ruby 项目一样。通过在 vimrc 中声明所需的插件,vundle 通过 ex 命令行界面处理所有其余的事情,包括安装/更新和删除插件。最重要的是,vundle 是在纯 VimL 中实现的。在 vundle 的帮助下,只需一个简单的 vimrc 文件就可以跨多台计算机管理 vim 配置。作为现代插件管理工具,vundle 依赖 Git,可以直接从 Github 安装插件。Vundle 还为搜索和安装插件提供了精美的交互界面。
虽然 Vundle 并没有完全满足我的要求,但它确实朝着正确的方向前进,这对我来说似乎是一个很好的起点。
还有pathogen.vim
http://www.vim.org/scripts/script.php?script_id=2332
尽管它并不完全符合您的要求,但它提供了一种管理 github 和 bitbucket 的结帐的方法。
这很好,因为它分离了插件的目录结构。因此,您可以签出插件的存储库并获得适当的版本控制,而不是依赖维护者来更新代码。此外,它不依赖插件作者按照引用的其他选项的要求进行设置/打包。
vim.org 上还有其他一些插件可以执行此任务,尽管我目前找不到它们
我现在使用的是手工制作的设置,但我一直告诉自己有时间试一试(链接都与同一个插件有关):
- vim-addon-manager : 轻松管理和更新插件;Marc Weber (@vim.org) 的插件
- Marc Weber 的GitHub 个人资料;他有许多与 vam 相关的 repos
- vim-plugin-manager @vim wiki -- 页面名称不同,但实际上是同一个插件的意思
再一次,我自己还没有真正尝试过,但它看起来确实很有希望。
Vim.org + Vimballs + GetLatestVimScripts 目前是首选内置方式来管理 vim 插件。
:h GetLatestVimScripts
它的坏处:
- 不支持 Windows(GetLatestVimScripts 使用 wget AFAIR)
- vim.org 有很多不支持 GLVS 和 Vimball 的插件。
所有这些答案似乎都很古老。如this answer to a similar question中所述,
Vim 8.0 和 Neovim 都有自己的内置包管理器
根本不需要另一个插件管理器。
我已经使用它一两年了,它对我来说似乎很简单。
以下是一些有关其优点以及如何使用它的资源: