我对普通人类没有兴趣。你们之中要是有外星人、未来人、异世界的人、超能力者。就尽管来找我吧!以上。

- 凉宫春日

被遗忘的vim插件管理程序⋯⋯

September 25, 2011

众所周知vim缺少官方的包管理机制,刚开始接触vim的人往往都有IDE情结,喜欢四处搜罗插件,光是ftplugin目录就要塞进十几个脚本,把“编辑器之神”武装得包罗万象无所不能,然而这些卑微的凡人,尽管手握神器,总归还是要身陷在繁忙的日常coding中,最初的欣喜和热情也在日复一日中消散,由于没有定期更新这些脚本文件的办法,更没有精力去逐个关注,渐渐就忘记了兼容性升级,忘记了:com,忘记了键位映射,忘记了操作符,最后可能连插件名字和功能都记不得了⋯⋯

好罢这不是那种“我有一个朋友”式的故事,我只是想说一个自动化的插件管理程序能解决这种维护烦恼,起码不至于等到世界变了OS都升级了出现严重兼容性问题了编辑器都启动不了之后再去排查原因移除长久不用的插件⋯⋯

这本书告诉我们技术不是孤立发展的,当你察觉到一种需求的时候,意味着大半个开发者社区都有了这种需求,当你被逼得动手尝试idea,意味着同类项目已经更新了一个大版本,所以说当前比较完善的vim包管理工具大概有以下这么几种⋯⋯

https://github.com/tpope/vim-pathogen
https://github.com/gmarik/vundle
https://github.com/c9s/Vimana

但是我很不喜欢那种自己建私有目录占地为王的项目,最后那个林佑安老爷的程序是perl的,因为够轻量我很早就帮他宣传过,不过当时使用很麻烦,后来就没关注了,没想到已经开发的这么完善,还有日本perl基友同好的参与⋯⋯

所以去年我写了一个程序来自动化插件的查找和升级——没错,本文是从去年穿越过来的,以上都是去年的想法⋯⋯

https://github.com/dexteryy/yy-vimscript/blob/master/pluginscaner.py

因为vim脚本并不算很成熟的软件分发机制,.vim目录也不是很靠谱的组织结构,我不想把它们搞成一个黑箱,这个python脚本只是替代了一部分人工行为:先看看我装了哪些插件 -> 访问vim.org,搜索插件名称 -> 在插件主页下方的下载列表里找到最新版本 -> 对比版本号或日期⋯⋯

初次执行是这个样子:

结果是这个样子:

不要被那些0吓到,这显然是因为没初始化索引⋯⋯我懒得做初始化选项⋯⋯

在命令后面加上用单个插件名称,就会提示下载方式:

不管你答yes还是no,这个插件都算作升级过了⋯⋯

逐个这么执行一遍⋯⋯今后就能正常的用它检查版本更新了⋯⋯

好罢我发这篇文章是希望有人能继续完善这个脚本命令,或许有人像我一样有控制欲,只愿意接受这种自动检查和辅助安装的包管理方式。我懒得写后续的功能了,所以把它搁了一年⋯⋯

如果你要修改代码,记得把里面的google api key换掉⋯⋯

posted in Python, 工具 by Dexter.Yy

Follow comments via the RSS Feed | Leave a comment | Trackback URL

5 Comments to "被遗忘的vim插件管理程序⋯⋯"

  1. pct wrote:

    Hi, 小弟也用 python + vim-pathogen + git 處理了 vim plugin, 不曉得您願意試試看嘛?https://github.com/pct/vimpyre

  2. Dexter.Yy wrote:

    文中已经提到过我不喜欢pathogen的原因了…..

  3. pct wrote:

    是說那句「很不喜欢那种自己建私有目录占地为王的项目」?

  4. 听临 wrote:

    我一直用这个管理的,会自动下载、克隆版本库,然后也不是自己建私有目录占地为王。
    https://github.com/carlhuda/janus

    Ruby写的。

    但每次更新会花更多时间而已,我还是喜欢版本控制的。

  5. Jason Wu wrote:

    学习了,一直都是自己把插件同步到bitbucket上

Leave Your Comment

YY in Limbo (混沌海狂想) © Dexter.Yy

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution - NonCommercial - ShareAlike 3.0(署名-非商业性使用-相同方式共享).
Creative Commons License