It all started with CoffeeScript. Like all languages I play with, one of my first step is to look for a Vim syntax file. Thankfully, the CoffeeScript page itself links to kchmck‘s vim-coffee-script on github. So far, so good.
Here’s the first step:
Wait … what?! I hate having to install software to … install software. At this point, I was ready to close the tab but it was a tpope project. That’s usually a sign of quality. I was ready to give this pathogen thing another look.
So … pathogen lets you dump “bundle” directories under ~/.vim/bundle/ and will setup the various Vim variables so that the plugin, ftplugin, syntax, ftdetect are all hooked up correctly. That’s nice; it solves a lot of the pain I’ve felt over the years about trying various vim plugins and messing with my setup.
In theory, you would do something like:
And add at the top of your .vimrc:
filetype off
call pathogen#helptags()
call pathogen#runtime_append_all_bundles()
That’s pretty close to how I have it setup. While I was making my mind about pathogen, I found Tammer Saleh’s post about pathogen. Besides the details I outlined above, he suggests git cloning the repository and removing the .git instead of playing with git submodules. I could not agree more. Of course, I have to deal with that situation only because my ~/.vim is under git. (like all my dotfiles, read more)
I simplified his script for my own purposes: (on github)
refresh() {
local url="$1"
local dir="$2"
rm -rf $dir
git clone $url $dir –depth=1
rm -rf $dir/.git
if [ -f "$dir/.gitignore" ]; then
rm "$dir/.gitignore"
fi
}
refresh https://github.com/scrooloose/nerdcommenter.git nerdcommenter
refresh https://github.com/vim-scripts/matchit.zip.git matchit
refresh https://github.com/tpope/vim-haml.git vim-haml
refresh https://github.com/timcharper/textile.vim.git textile
refresh https://github.com/kchmck/vim-coffee-script.git vim-coffee-script
I think the --depth=1 on the git clone is a nice touch … especially since I delete the git directory right after the download. The CoffeeScript plugin is working well and it keeps being committed to. The refresh script is quite useful.
I’m planning on packaging a few of the plugins I wrote and “bundle” them too. (vim-slime)
