web-dev-qa-db-fra.com

Comment trouver le codage du tampon actuel dans vim?

Dites que je modifie un fichier avec vim (ou gvim). Je n'ai aucune idée du codage du fichier et je veux savoir s'il s'agit du format UTF-8 ou ISO-8859-1 ou autre. Puis-je dire à vim de me montrer quel encodage est utilisé?

88
innaM

Le paramètre fileencoding indique le codage du tampon actuel:

:set fileencoding
fileencoding=utf8

Il n'y a pas vraiment de moyen courant de déterminer le codage d'un fichier en texte brut, car ces informations ne sont pas enregistrées dans le fichier lui-même - à l'exception des fichiers UTF-8 où vous avez une prétendue nomenclature indiquant le codage. C'est pourquoi les fichiers XML et HTML ont des métatags charset.

Vous pouvez appliquer un encodage particulier avec le paramètre 'encoding'. Voir :help encoding et :help fileencoding dans Vim pour savoir comment l'éditeur gère ces paramètres. Vous pouvez également ajouter plusieurs paramètres de codage de fichiers à votre vimrc pour que vim tente de détecter en fonction de ceux répertoriés.

102
jtimberman

Notez que l'encodage des fichiers est non explicitement indiqué n'importe où dans un fichier. Ainsi, VIM et les autres applications doivent deviner le codage. La manière canonique de faire cela est avec l'application chardet, qui peut être exécutée à partir de VIM comme suit:

:!chardet %

La réponse fournie par jtimberman vous indique le codage du tampon actuel , qui peut ne pas être identique au fichier sur le disque. Ainsi, vous remarquerez que chardet affichera parfois un codage différent de VIM, en particulier si vous avez configuré VIM pour toujours utiliser un codage spécifique (c.-à-d. UTF-8).

La bonne chose à propos de chardet est qu’elle donne un indice de confiance, alors que VIM peut avoir tort (et a souvent tort) de deviner le codage s’il n’ya pas beaucoup de caractères supérieurs à\x7F (ASCII 127). Par exemple, ajouter un seul א à un fichier long de PHP code permet à chardet de penser que le fichier est ISO-8859-2 avec une confiance de 0,72, alors que l'ajout de la phrase légèrement plus longue שלום, עולם!‏ donne UTF-8 avec un score de confiance 0,99. Dans les deux cas, set fileencoding? a affiché UTF-8 non pas parce que le fichier sur le disque était au format UTF-8, mais parce que VIM est configuré pour utiliser UTF-8 en interne.

12
dotancohen