☣ Infect

Package manager for Vim 8.

The only package manager that makes no impact on start up time.

Manage your entire vim config with a single .vimrc file, while keeping the .vimrc file functional on systems with out any custom plugins installed, or with older versions of Vim.

Installation

Infect has no dependencies other than a recentish version of ruby. And can be installed as a standalone script, perhaps in your ~/bin directory.

$ curl https://raw.githubusercontent.com/csexton/infect/master/standalone/infect > ~/bin/infect && chmod +x ~/bin/infect

Or if you prefer to manage it at a gem:

$ gem install infect

Objective

The point of Infect it to make it easy to manage your vim config. You should be able to check in your .vimrc into source control and use that one file to easily install any plugins or packages you need.

Rationale

Why invent another way of managing vim plugins?

  • I want to be able to use my .vimrc when without installing plugins.
  • I like having simple command line apps to manage my setup.
  • I wanted to the built-in plugin loading system.
  • I was tired of managing git submodules, nor did I find it very scalable.
  • I do not want my plugin manager to affect the start up time of my editor.

Many of the other plugins mangers are really slick, but every one I have seen has violated at least one of those.

I don't really want to use my editor for installing stuff. Feels like it goes against the Vim philosophy. Bram said "Each program has its own task and should be good at it" and think installing things is better suited for a command line script.

Usage

Infect reads your .vimrc file and looks for magic comments. It uses those to install vim packages and plugins. A minimal .vimrc to use with infect might look like this:

"=plugin tpope/vim-sensible
"=plugin csexton/trailertrash.vim

syntax on
filetype plugin indent on

Just put those lines at the top of your .vimrc and infect will install plugins and packages for you.

Building plugins

Some plugins have binaries that need to be compiled, and infect can automatically run those commands for you. For example Shougo's vimproc needs you to call make after installing it:

"=plugin Shougo/vimproc.vim build: make

Plugins vs Packages

Packages are collections of plugins. Introduced in Vim 8, they provide a way to combine a number of plugins together and have Vim load them for you. One of the nice upsides to this is you don't need any external plugin manager to be able to load plugin bundles, just have to put them in the right folder.

Infect will do this for you. If you declare a 'plugin, infect will put that in thedefaultpackage'sstart` directory. That will cause it to automatically be loaded when vim is started.

Loading automatically or optionally

According to Vim docs:

Note that the files under "pack/foo/opt" are not loaded automatically, only the ones under "pack/foo/start". See |pack-add| below for how the "opt" directory is used.

This means you have to call :packadd to load any optional plugins. This can be hanyd if you don't want to proactivly load up some plugins.

Tell vim to only load trailertrash when requested:

"=plugin csexton/trailertrash.vim load: opt

Then to request it to be loaded:

:packadd trailertrash.vim