Respuestas:
La configuración de codificación de archivo muestra la codificación del búfer actual:
:set fileencoding
fileencoding=utf8
Realmente no hay una forma común de determinar la codificación de un archivo de texto plano, ya que esa información no se guarda en el archivo en sí, excepto en los archivos UTF-8 donde se encuentra la llamada lista de materiales que indica la codificación. Es por esto que los archivos xml y html tienen metatags de conjuntos de caracteres.
Puede imponer una codificación particular con la configuración de 'codificación'. Ver :help encoding
y :help fileencoding
en Vim por cómo el editor maneja estas configuraciones. También puede agregar varias configuraciones de codificación de archivos a su vimrc para que vim intente detectar basándose en las que se enumeran.
Tenga en cuenta que la codificación de los archivos es no declarado explícitamente En cualquier lugar en un archivo. Por lo tanto, VIM y otras aplicaciones deben adivinar la codificación. La forma canónica de hacer esto es con la chardet
Aplicación, que puede ejecutarse desde VIM como tal:
:!chardet %
La respuesta proporcionada por jtimberman le muestra la codificación de la buffer actual que puede no ser la misma codificación que el archivo en el disco. Así, te darás cuenta de que chardet
a veces mostrará una codificación diferente a VIM, especialmente si tiene VIM configurado para usar siempre una codificación específica (es decir, UTF-8).
Lo bueno de chardet
es que da un puntaje de confianza para su conjetura, mientras que VIM puede (y con frecuencia es) equivocarse al adivinar la codificación si no hay muchos caracteres arriba de \ x7F (ASCII 127). Por ejemplo, añadiendo un solo א
a un largo archivo de código PHP hace chardet
piensa que el archivo es ISO-8859-2
con una confianza de 0,72, mientras que añadiendo la frase un poco más larga שלום, עולם!
Da UTF-8 con un puntaje de confianza de 0.99. En ambos casos, set fileencoding?
mostró UTF-8
no porque el archivo en el disco fuera UTF-8, sino porque VIM está configurado para usar UTF-8 internamente.