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

La création d’un système de templates sous Vim permet de gagner du temps en évitant la reécriture des éléments courants. Le système présenté dans cet article se base sur l’extension du nom de fichier pour charger le template adéquat. L’exemple des scripts est utilisé pour illustrer l’idée car ils contiennent par bonne pratique :

  • 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
#-------------------------------------------------
Vous avez aimé ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

quinze + 15 =