Vim: forcer un encodage à l'ouverture d'un fichier

Je peux dire que Vim (et son frère gvim) est mon éditeur favori pour pleins de raisons pour la plupart subjectives, par contre, s’il y a une chose qui me gonfle (mais il n’y peut pas grand chose), c’est quand il détecte mal l’encodage d’un fichier… ou devrais-je dire lorsque j’ai (ou celui qui m’a passé le fichier) fait une gaffe en enregistrant le fichier.

En gros, pour le peu que j’ai pu y comprendre, vim s’aide de la variable « fileencodings » pour déterminer en testant 1/1 l’encodage du fichier.

Si vous utilisez utf-8, la valeur de cette variable est par défaut:

fileencodings=ucs-bom,utf-8,default,latin1
  • ucs-bom: le fichier doit commencer par une marque d’encodage: BOM
  • utf-8: s’il y a un seul caractère non valide dans cette encodage (la gaffe dont je parlais tout à l’heure ;)), cet encodage est rejeté
  • latin1: c’est l’encodage iso8859-1, cet encodage est choisi si les autres échouent (si on le place en premier, il sera toujours accepté)

Alors, du coup comment faire pour ouvrir le fichier dans le bon encodage même si on a un ou deux caractère qui mettent le bazar… la solution est simple, mais bon j’ai tourné autour un bon moment…, il suffit de l’indiquer à l’ouverture du fichier de la manière suivante:

:e ++enc=encoding file

pour forcer l’utf-8 par exemple:

:e ++enc=utf-8 file

pour le faire depuis la ligne de commande:

vim -c ':e ++enc=utf-8 file'