Configuration vim avec vundle et github

Je vous donne ici la procédure permettant d’utiliser facilement vos plugins et votre configuration Vim sur différentes machines grâce à github. Je dispose d’une configuration que j’utilise sur tous les serveurs que j’administre. Lorsque je modifie ma configuration vim sur une des machines, je l’envoie sur github. Les autres serveurs mettent automatiquement à jour cette configuration toutes les nuits via une tâche cron.

Création de la configuration vim

Il faut disposer d’un compte sur github puis créer un nouveau repository mais sans l’initialiser. Pour l’exemple, j’ai nommé le mien myvimrc.

Si vous avez déjà un fichier ~/.vimrc sur votre machine, supprimez-le (ou sauvegardez-le). Vous allez ensuite créer un dossier ~/.vim, initialiser le dépôt, faire votre premier commit et pousser le tout vers github, puis créer un lien pour activer votre vimrc.

mkdir $HOME/.vim
cd $HOME/.vim
git init
touch vimrc
git add vimrc
git commit -m "First commit"
git remote add origin https://github.com/ardeidae/myvimrc.git
git push -u origin master
ln -s $HOME/.vim/vimrc $HOME/.vimrc

Voilà, votre configuration vim est commité. Le vimrc est vide certes, mais il est dans le dépôt.

Pour installer et mettre à jour des plugins, on utilise Vundle. Les plugins s’installent depuis des dépôts git, plus principalement github. En plus de cela, Vundle génère automatiquement la documentation des plugins installés. Il s’installe facilement, encore une fois depuis github.

git clone https://github.com/gmarik/vundle.git $HOME/.vim/bundle/vundle

Maintenant, ajoutez ceci dans votre vimrc, c’est le strict minimum pour activer Vundle et définir trois raccourcis très pratiques pour mettre à jour vos plugins.

set nocompatible               " be iMproved
filetype off                   " required!

set runtimepath+=~/.vim/bundle/vundle/
call vundle#rc()

" Set leader to , must come before any <leader> mappings
let mapleader=","

" let Vundle manage Vundle, required! 
Bundle 'https://github.com/gmarik/vundle.git'
nnoremap <Leader>bi :BundleInstall<CR>
nnoremap <Leader>bu :BundleInstall!<CR> " Because this also updates
nnoremap <Leader>bc :BundleClean<CR>

" PLUGINS:
" a port of the monokai scheme for TextMate
" Bundle 'git://github.com/vim-scripts/molokai.git'
"...

filetype plugin indent on     " required!

" PREFERENCES:
" set number
" colorscheme molokai
"...

Vos plugins doivent être déclarés avec la ligne Bundle, avant l’instruction filetype, et vos diverses préférences doivent être déclarées après. Relancez vim, puis tapez ,bi. Cela a pour effet d’installer les plugins manquants.

À chaque fois que vous modifierez votre fichier vimrc, il faudra ensuite exécuter les commandes suivantes pour les pousser sur github.

cd $HOME/.vim
git add vimrc
git commit -m "Basic Vundle vimrc."
git push

Utilisation de la configuration vim sur d’autres machines

Pour utiliser votre configuration vim sur une autre machine, il est nécessaire de cloner votre dépôt, d’initialiser Vundle et de créer le lien vers le vimrc. Tout ceci pourra être automatisé avec un script.

git clone https://github.com/ardeidae/myvimrc.git $HOME/.vim
git clone https://github.com/gmarik/vundle.git $HOME/.vim/bundle/vundle
ln -s $HOME/.vim/vimrc $HOME/.vimrc

Ensuite, lorsqu’une nouvelle version de votre configuration est transmise sur github, vous pouvez mettre à jour chacun de vos serveurs via un git pull.

cd $HOME/.vim
git pull

Automatiser les mises à jour avec cron

Pour mettre à jour automatiquement le vimrc ainsi que les plugins via Vundle, vous pouvez ajouter ceci dans crontab (crontab -e).

0   0   *   *   *   cd .vim && git pull > /dev/null 2>&1 && cd - && vim +BundleInstall +BundleClean! +qall

Complément d’informations

Par expérience, je préfère utiliser http(s):// plutôt que git:// pour les URL des dépôts des plugins car certains méchants administrateurs ne laissent passer que les requêtes http(s) à travers les proxies.

Sous Linux, et Mac OSX, vous pouvez automatiser le clonage de votre dépôt, grâce au script install.sh et à la commande curl, comme vous pouvez le voir dans le README.

Libre à vous de faire un fork de ce dépôt pour créer votre propre configuration vim.

Enfin, si vous êtes sous Windows, il vous faudra installer msysgit, cloner manuellement les dépôts et créer le lien symbolique avec la commande mklink, par exemple.