Vim et les fichiers unix, mac et dos
Vim à beau être mon éditeur de texte favori depuis quelques années, il n’en fini pas de me surprendre !
Je me trouve ce matin confronté à un problème classique : l’édition d’un fichier texte créé par un système non unix (mac pour être précis).
Je me retrouve avec un fichier d’une seule ligne qui contient des vilains ^M en lieu et place des retour charriots. La plupart des utilisateurs de Vim régleraient ce problème avec une substitution globale du type :
:%s/^M//g
Mais cette solution n’est pas convenable car elle présuppose que l’on connait exactement, sous forme d’expression rationnelle, les fins de ligne générées par les différents systèmes. De plus, elle nous oblige à modifier à la main chaque fichier qui pose problème.
La bonne solution est de dire à Vim quels sont les types de fichiers connus et de changer le type si besoin est. Cette optique est particulièrement plaisante car elle rend la procédure totalement transparente aux yeux de l’utilisateur. De plus, autre bienfait de cette solution : nous n’auront plus à nous soucier de l’apparence des fichiers ouvert car Vim reconnaitra automatiquement leur format et affichera donc le contenu du fichier en conséquence (les ^M disparaitront donc à jamais).
Il nous faut tout d’abord ajouter dans notre ~/.vimrc la ligne suivante qui défini les types de fichiers connus dans l’ordre de notre préférence :
:set fileformats=unix,mac,dos
Ensuite, par commodité, nous allons modifier le contenu de la ligne de status pour y afficher le format du fichier édité :
:set statusline=%<%f%h%m%r%=%{&ff} %l,%c%V %P
Désormais, tout fichier ouvert, sera convenablement affiché et ce, quelque soit son format.
Si on édite un fichier qui n’est pas dans un format qui nous convient, on utilisera la commande suivante pour le convertir dans le format désiré :
:set fileformat=FORMAT
Où FORMAT peut valoir : ‘unix’, ‘dos’ ou ‘mac’. Une sauvegarde du fichier validera le changement.