VIM ne propose pas nativement de support pour le type de fichier YAML. Si comme moi vous gérez quelques fichiers docker-compose directement sur vos serveurs, ce manque peut être assez rapidement pénalisant. Heureusement vim supporte de nombreux plugins et de modifications à son comportement par défaut.

vimrc l'indispensable

Le fichier .vimrc vous permet de configurer votre éditeur de texte favori en modifiant son comportement par défaut. Vous remarquez que je parle de comportement par défaut, et non de configuration. C'est simple, vim ne se configure pas vraiment en réalité. Tout ceci s'effectue au travers d'un langage bien spécifique : le VIMScript

Il faut être honnête, vim n'est pas l'éditeur de texte le plus simple à prendre en main. Mais une fois maîtrisé, il vous sortira de bien des situations !

Pour charger les réglages que nous allons modifier le fichier qui va être lu à chaque démarrage : .vimrc

Pour créer votre premier fichier, je vous conseille de reprendre celui présent sur votre distribution préférée :

cp /etc/vim/vimrc ~/.vimrc

Vous pouvez ensuite éditez ce fichier. Pour le reste de cet article, je vais partir du fichier de base présent sous Debian.

Je modifie immédiatement deux lignes :

syntax on
...
set mouse=""            " Enable mouse usage (all modes)
...

Ces modifications vont permettrent l'activation de la coloration syntaxique et je désactive l'utilisation de la souris : oui je suis vieux jeu...

Une fois ces modifications basiques réalisées, on va pouvoir passer à la prise en charge des fichiers YAML.

Support des fichiers YML

Nous allons repartir de notre fichier .vimrc pour lui ajouter le support des fichiers YML.

Il est sûrement possible de faire bien mieux en terme de gestion des fichiers YML par Vim. Mais je pars du principe ou je ne souhaite pas installer de plugin externe, ou effectuer des modifications trop longues sur Vim. L'idée reste que ces modifications peuvent être apportées rapidement sur n'importe quel serveur et en quelques secondes. De plus cela permet de maîtriser les modifications, car vim propose énormement de plugins. Mais maîtriser tout ce qui est fait dans ces plugins est ... chronophage.

Je ne m'autorise en fait que l'utilisation d'un script récupérable sur le site de vim : https://www.vim.org/scripts/script.php?script_id=739 :

wget -q -O yaml.vim https://www.vim.org/scripts/download_script.php?src_id=2249

Pour rester cohérent avec les "best practices" de vim, je déplace le fichier dans un dossier vim à la racine de mon $HOME :

mkdir .vim
mv yaml.vim ./vim/

Il ne me reste plus qu'à ajouter au fichier .vimrc les lignes suivantes :

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab 
au BufNewFile,BufRead *.yaml,*.yml so ~/.vim/yaml.vim

On peut également ajouter les options de foldmethod à notre configuration en modifiant la première ligne :

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab foldmethod=indent
au BufNewFile,BufRead *.yaml,*.yml so ~/.vim/yaml.vim

Cela va ajouter la gestion des blocs d'indentations au fichier yml :
vim-yaml

Voici quelques raccourcis pour gérer tout ça :

zo ouvre le bloc sous le curseur
zO ouvre tout les blocs sous le curseur
zc fermer un bloc sous le curseur
zM ferme tout les blocs

Il y en a bien d'autres, à découvrir dans la documentation : http://vimdoc.sourceforge.net/htmldoc/fold.html ( dans la section : OPENING AND CLOSING FOLDS ).


Vous voila maintenant mieux paré dans l'utilisation de vim pour éditer vos fichiers docker-compose directement sur votre serveur !

N'hésitez pas à faire vos commentaires ou à suivre les publications sur Twitter !