Lire un fichier XML avec vim
Le but est d’obtenir un affichage lisible lorsqu’on édite un fichier au format XML.
Par défaut si vous ouvrez un fichier XML avec vi, il ressemblera à ça:
<?xml version="1.0" encoding="UTF-8"?><root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/opt/monformat.xsd" format="2.0"><generation_date>2017-12-14</generation_date><compatibility><product>Jupiter</product><version>1.2</version></compatibility><system><model_number>123</model_number><serial_number>456978</serial_number></system><option name="Peinture"/><option name="Volant"/><option name="Autoradio"/><option name="Turbo"/><option name="Toit ouvrant"><parameter name="Teinté"/></option><option name="Sièges cuir"/><option name="Clim"><parameter name="Puissance">20 watts</parameter></option><option name="Allume cigare"/> <moteur name="1000CC"><mode name="Essence"/><target name="Filtre à particules"/><target name="Boite auto"/></moteur></root>
Pas très pratique pour la lecture…
Voici comment le rendre plus sympathique à l’écran:
1. Dans votre fichier .vimrc, ajoutez cette ligne:
filetype plugin indent on
2. Ouvrez votre fichier xml avec vi, puis tapez sur la touche « Echap », puis sur « : », puis tapez:
%s/</\r</g
L’effet est d’ajouter un saut de ligne avant chaque « <« .
3. Puis tapez à nouveau sur « Echap », puis tapez:
gg=G
(rien ne s’affiche quand vous tapez cette commande, c’est normal)
Votre fichier s’affichera en colonne et avec les bonnes indentations, comme ça:
<?xml version="1.0" encoding="UTF-8"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/opt/monformat.xsd" format="2.0"> <generation_date>2017-12-14 </generation_date> <compatibility> <product>Jupiter </product> <version>1.2 </version> </compatibility> <system> <model_number>123 </model_number> <serial_number>456978 </serial_number> </system> <option name="Peinture"/> <option name="Volant"/> <option name="Autoradio"/> <option name="Turbo"/> <option name="Toit ouvrant"> <parameter name="Teinté"/> </option> <option name="Sièges cuir"/> <option name="Clim"> <parameter name="Puissance">20 watts </parameter> </option> <option name="Allume cigare"/> <moteur name="1000CC"> <mode name="Essence"/> <target name="Filtre à particules"/> <target name="Boite auto"/> </moteur> </root>
Automatisation
Si vous ne voulez pas avoir à taper à chaque fois les 2 commandes, ajoutez une macro dans votre fichier .vimrc.
Créons une macro activable par exemple par la séquence de touches « @ » et « x ». Ajoutons la ligne suivante dans le fichier .vimrc:
let @x=':%s/</\r</g^M^[gg=G'
Important : Pour obtenir le « ^M », tapez CTRL+V puis CTRL+M, et pour obtenir le « ^[« , tapez CTRL+V puis la touche « Echap »
Désormais dans vi, il vous suffira de taper « @ » puis « x » pour que les fichiers XML se mettent en forme directement à l’écran.