Last Updated: June 21, 2016
·
1.467K
· faceleg

Programatically install Vim bundles

I have a simple bash script I use to normalise my shell on various computers. There are a selection of Vim plugins I couldn't live without, and therefore scripted up a basic Vim plugin install pattern that I use as part of the script that copies my various dotfiles into a system.

I've split the install process for each plugin into a separate file, and call them like:

#!/bin/bash
# filename: copy.sh

vim/install-pathogen.sh
vim/install-gitgutter.sh
vim/install-fugitive.sh
vim/install-neocomplcache.sh

Pathogen is required for many plugins, so it is installed first. The contents of vim/install-pathogen.sh:

#!/bin/bash
PATHOGEN="~/.vim/autoload/pathogen.vim"

# First make sure pathogen isn't present
if [ ! -f "`eval echo ${DIRECTORY//>}`" ]; then
    # I've simply copied the pathogen install steps from the README
    mkdir -p ~/.vim/autoload ~/.vim/bundle; \
    curl -Sso ~/.vim/autoload/pathogen.vim \
        https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim
fi

Finally, an example of installing a plugin:

#!/bin/bash
DIRECTORY="~/.vim/bundle/vim-gitgutter"

# Again, ensure the plugin hasn't been installed yet
if [ ! -d "`eval echo ${DIRECTORY//>}`" ]; then
    cd ~/.vim/bundle
    git clone git://github.com/airblade/vim-gitgutter.git
fi

2 Responses
Add your response

Unless you have plugins with build/install stages, isn't this easier to do with git submodules? I do just that for my Vim setup and clone it from GitHub whenever I have to get my Vim environment.

over 1 year ago ·

Good point gaveen, that would work well. I'm planning on moving plugin-specific ~/.vimrc config into the install scripts as well, as since starting to use a bunch of plugins my ~/.vimrc file has become rather unwieldy.

over 1 year ago ·