Réponses:
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:
:!chardet %
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 laisse chardet
penser que le fichier a ISO-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, a set 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.
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:
:e ++enc=<encoding>
où encoding
pourrait êtrecp850, ISO-8859-1, UTF-8, ...
Vous pouvez utiliser file yourfilename
pour rechercher un encodage ou chardetect
(fourni par python-chardet
ou uchardet
selon votre distribution Linux) comme suggéré par dotancohen.