专栏首页liuchengxuVim 插件管理器概览

Vim 插件管理器概览

什么是 Vim 插件

:h plugin :

Vim's functionality can be extended by adding plugins. A plugin is nothing more than a Vim script file that is loaded automatically when Vim starts. You can add a plugin very easily by dropping it in your plugin directory.

一个 Vim 插件不过是 Vim 启动时自动加载的 Vim script 脚本而已. Vim 启动时会自动加载 runtimepath 中的 plugin 子目录下的所有文件. 那么, runtimepath 又是什么? :h runtimepath:

runtimepath

runtimepath 就是 Vim 查找脚本文件的地方, runtimepath 之于 Vim , 有点类似 $PATH 之于 shell. :echo &runtimepath 即可进行查看.

runtimepath 下面有两个子目录需要注意:

goyo.vim

  • plugin: plugin 目录下面的所有文件都会在启动时进行加载.
  • autoload: autoload 里面的文件, 在启动时并不会进行加载, 而是通过一种特殊的方式进行加载, 主要是命名上有要求, 详情见 :h autoload, 这里就不展开了. autoload 只不过是为了加速 Vim 的启动, 因为要将所有的内容放在 plugin 下面的话,可能会导致启动时间增加, 而且也没有必要, 因为很多内容并不常用, 无须在启动时加载. "坏处" 就是需要在命名上进行规范.

上图中还有一个 doc 目录, 它里面通常放的是插件的 help 内容.

如果不用插件管理器, 手动管理 Vim Script 脚本文件也可以. 但是当插件一多的话, 就会变得很可怕, 更新, 删除都会很麻烦. 直到目前为止, Vim 并没有标准的插件管理器, 尽管 Vim 8 已经引入了 packages 的管理功能 (:h packages).

主流插件管理器

主流的插件管理器有下面这几个, 从早期现在看来 "稍显简陋" 的 pathogen, 到 Vundle 已经是真正有了几分 manager 的意思, 再到现在比较流行的 vim-plugdein.vim ( neobundle 是 dein 作者前一个插件管理器作品, 已经弃用了 ). vim-plug 和 dein.vim 现在都支持并行安装和延迟加载, 这对于有几十甚至上百个插件的人来说是非常重要的.

我比较喜欢 vim-plug, space-vim 也是使用的 vim-plug, 因为它设计简单, 使用方便, 功能也都算完备.

vim-plug

非主流插件管理器

除了主流的插件管理器, 还有很多非主流的管理器. 主流管理器都是用 Vim Script 实现的, 只是有些功能, 比如并行安装, 会有一些版本或是编译的特性 (+python等)要求, 使用上没有什么依赖. 而一些非主流管理器可能是用其他语言写的, 需要你事先安装了那个语言, 比如有用 Rust 和 Haskell 实现的.

其实一个管理器的主要功能就是到 GitHub 上下载插件 (git clone) 然后放到指定目录, 这里 是 vim-plug 的作者对 vim-plug 诞生写的一篇文章, 里面介绍了 vim-plug 的由来.

下面是一些非主流的 Vim 插件管理器, 有兴趣的可以自行查看:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 超漂亮 vim 配置:space-vim

    space-vim 现已支持 Layer ,以下内容大都陈旧,欢迎访问 github 查看最新版本: >>>> space-vim

    用户1558438
  • 为什么去中心化兑换协议很重要

    今天,去中心化兑换(decentralized exchange)仍处于早期,但是几年后,它很可能会是区块链生态中不可或缺的一环。

    用户1558438
  • 编译器入门

    编译器(compiler)就是一个翻译其他程序的程序而已。传统的编译器将源代码翻译为计算机能够理解的可执行机器代码(有一些编译器将源代码翻译为另一种编程语言。这...

    用户1558438
  • Swift入门: 数据类型

    数据种类繁多在Swift中是单独处理他们的。在给变量赋值时,您已经看到了最重要的类型之一,但在Swift中,这称为Swift(字面上是字符串)。

    韦弦zhy
  • LRU-K和2Q缓存算法介绍

    LRU-K中的K代表最近使用的次数,因此LRU可以认为是LRU-1。LRU-K的主要目的是为了解决LRU算法“缓存污染”的问题,其核心思想是将“最近使用过1次”...

    Lucien168
  • 几款浏览器JavaScript调试工具

         WEB开发工具的使用已经非常普及,如果想要更方便于开发的话,不妨看看本文介绍的15款基于浏览器扩展的WEB开发工具。 1.Firebug   Fir...

    Java中文社群_老王
  • 47. 访问MySql数据库实现增删改查 | 厚土Go学习笔记

    作为服务端程序,对数据库的访问是很常见的操作。我们来熟悉一下go语言访问MySql数据库的基本操作(增删改查)。 数据库访问需要用到标准库database/sq...

    李海彬
  • 7500 美元 TED 门票送不起,但 TED 小程序我们想要送给你

    TED 的三个英文字母分别代表着「Technology 科技」,「Entertainment 娱乐」和「Design 设计」。

    知晓君
  • 用2600条文本数据,为你揭秘TED受欢迎的真正原因!

    为什么不超过18分钟的TED演讲,平均点击率却超过百万次,最高的甚至超过5000万次?为什么连比尔•盖茨、史蒂芬•霍金、阿尔•戈尔这样的商界、学界与政界精英都竞...

    DT数据侠
  • 47. 访问MySql数据库实现增删改查 | 厚土Go学习笔记

    作为服务端程序,对数据库的访问是很常见的操作。我们来熟悉一下go语言访问MySql数据库的基本操作(增删改查)。 数据库访问需要用到标准库database/sq...

    李海彬

扫码关注云+社区

领取腾讯云代金券