Mise en place d'un système de templates sous Vim

  • la ligne de shebang qui précise l'interpréteur à utiliser
  • un bloc d'en-tête qui indique les informations utiles pour la maintenance (auteur, coordonnée de contact du mainteneur, date de création/modification, ...)

Création des templates

mkdir -p ~/.vim/templates
touch ~/.vim/templates/skeleton.sh
touch ~/.vim/templates/skeleton.py

Exemple de contenu pour le template skeleton.sh :

#!/bin/bash


#--------------------------------------------------
# author:  {{AUTHOR}}
# contact: {{EMAIL}}
# date:    {{TODAY}}
#-------------------------------------------------

On remarquera les tags de la forme {{VARNAME}} qui seront remplacés par des valeurs définies dans .vimrc.

Création du fichier de configuration .vimrc

Le fichier de configuration ~/.vimrc est lancé à chaque utilisation de Vim pour l'usager courant. Il s'agit d'un script exécutant des commandes Vim. C'est avec lui que l'on va charger un template.

touch ~/.vimrc

Contenu du script .vimrc :

# variables
let AUTHOR = 'Mikael FLORA'
let EMAIL  = 'support@mikael-flora.fr'
let TODAY  = strftime('%Y-%m-%d %H:%M:%S')

# load template
autocmd BufNewFile *.sh 0r ~/.vim/templates/skeleton.sh
autocmd BufNewFile *.py 0r ~/.vim/templates/skeleton.py

# replace variables
autocmd BufNewFile *.sh,*.py exe 's/{{AUTHOR}}/' . AUTHOR . '/g'
autocmd BufNewFile *.sh,*.py exe 's/{{EMAIL}}/'  . EMAIL  . '/g'
autocmd BufNewFile *.sh,*.py exe 's/{{TODAY}}/'  . TODAY  . '/g'
  • le premier bloc défini les variables
  • le second bloc indique quel template utiliser à l'ouverture d'un fichier en se basant sur son extension
  • le troisième bloc remplace les tags par la valeur des variables qui leurs sont associés

Compréhension du script .vimrc

let TODAY = strftime('%Y-%m-%d %H:%M:%S')
  • let VARIABLE = VALUE : déclare une variable en lui assignant sa valeur
  • strftime() : fonction qui retourne la date courante au format souhaité
autocmd BufNewFile *.sh 0r ~/.vim/templates/skeleton.sh
  • exe : commande qui prends en argument une string qui évalue celle-ci comme une commande afin de l'exécuter (tout ce qui suit la commande exe est en réalité une commande sous forme de string. Cette manière de procéder est contrain à cause de l'utilisation d'une variable)
  • 's/{{TODAY}}/' . TODAY . '/g' : chaîne de caractères représentant la commande à exécuter (première string concaténé à la variable TODAY concaténé à la dernière string). Ici la commande sera la substitution de la chaîne {{TODAY}} par le contenu de la variable TODAY

Utilisation

vim myscript.sh

Ce qui génère automatiquement :

#!/bin/bash


#--------------------------------------------------
# author:  Mikael FLORA
# contact: support@mikael-flora.fr
# date:    2017-09-14 20:34:21
#-------------------------------------------------
By @Mikael FLORA in
Tags : #vim,