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é?
la source
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é?
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 soi-disant 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.
Notez que l'encodage des fichiers n'est explicitement indiqué nulle part dans un fichier. Ainsi, VIM et d'autres applications doivent deviner le codage. La manière canonique de faire cela est avec l'
chardet
application, qui peut être exécutée à partir de VIM de la manière suivante:La réponse fournie par jtimberman vous montre le codage du tampon actuel, qui peut ne pas être le même que le fichier sur le disque. Ainsi, vous remarquerez que l’
chardet
encodage sera parfois différent de celui de VIM, en particulier si vous avez configuré VIM pour toujours utiliser un encodage spécifique (c’est-à-dire UTF-8).La bonne chose à propos de cela
chardet
est qu’elle donne un score de confiance pour son estimation, 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 simpleא
à un long fichier de code PHP laissechardet
penser que le fichier aISO-8859-2
une confiance de 0,72, tandis que l'ajout de la phrase légèrement plus longueשלום, עולם!
donne UTF-8 avec un indice de confiance de 0,99. Dans les deux cas, aset fileencoding?
montréUTF-8
non pas parce que le fichier sur le disque était UTF-8, mais parce que VIM est configuré pour utiliser UTF-8 en interne.la source
chardet <file>
. Encore une bonne suggestion.J'ai trouvé que: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
Vous pouvez recharger un fichier en utilisant un codage différent si Vim n'a pas pu détecter le codage correct:
où
encoding
pourrait êtrecp850, ISO-8859-1, UTF-8, ...
Vous pouvez utiliser
file yourfilename
pour rechercher un encodage ouchardetect
(fourni parpython-chardet
ouuchardet
selon votre distribution Linux) comme suggéré par dotancohen.la source