¿Cómo puedo usar vim para convertir mi archivo a utf8?

Respuestas:

179

Si está editando un archivo codificado como latin1, encontrará que 'fileencoding' para ese búfer está configurado en latin1. Por lo tanto, deberá configurar manualmente la codificación del archivo antes de guardar el archivo.

:set fileencoding=utf8
:w myfilename

También tenga en cuenta que los archivos UTF8 a menudo comienzan con una marca de orden de bytes (BOM) que indica endianness. La lista de materiales es opcional, pero algunos programas la utilizan exclusivamente para determinar la codificación del archivo. Bajo ciertas condiciones, Vim escribirá la lista de materiales, pero a veces no lo hará. Para establecer explícitamente la lista de materiales, haga lo siguiente:

:set bomb

Para obtener más información :help mbyte-optionsy :help utf8y :help bomb.

Eric Johnson
fuente
Las instrucciones funcionan bien, pero: 1) utf-8 no tiene endianidad (como explica vim help , la lista de materiales de utf-8 simplemente indica que el archivo es utf-8); 2) Cuando vuelva a abrir el archivo más tarde, deberá set fileencoding=utf-8volver a tenerlo por adelantado. Vim ni siquiera nota la lista de materiales si le dijiste que escribiera una (y de hecho la escribe). Para que utf-8 funcione, lo necesita o set encoding=utf-8en la configuración de inicio. Al menos, esa es la historia en mi sistema.
Stein
35
:w ++enc=utf-8 %

para escribir el archivo en codificación utf-8 en el disco.

Michael Krelin - hacker
fuente
5
Aunque esto es correcto, su respuesta no debería haber obtenido tantos votos a favor en comparación con la de Eric Johnson. La razón es que si no lo configura fileencoding, :w ++enc=utf-8es válido una vez, pero la próxima vez que lo ejecute :w, se 'fileencoding'usará el valor de , y si no lo ha cambiado (explícitamente durante la edición o al volver a cargar el archivo, esperando que 'fencs'se establece de manera adecuada y la codificación real es bien detecta-), la edad de codificación va a volver.
Benoit
1
@ MichaelKrelin-hacker, cambiar fileencodingtambién es una respuesta válida a la pregunta, que en mi opinión no conduce a adoptar malos hábitos. Pero bueno, supongo que es solo una cuestión de humor.
Benoit
3
@Benoit, ¡no insinué que la respuesta de Eric no sea válida! Si encuentro algo extraño en su respuesta, no es el contenido, sino por qué
publicó
3
@Michael Krelin - hacker: consulte las preguntas frecuentes. En realidad, se le anima a responder su propia pregunta. Es el objetivo de una página de preguntas y respuestas como esta. No importa quién responda.
0xC0000022L
2
@ 0xC0000022L, la última vez que verifiqué (no lo he verificado ahora), hubo algo acerca de encontrar una solución después de hacer la investigación, no sobre publicar preguntas y respuestas en un minuto . Dicho esto, solo estaba hablando de lo extraño de su respuesta, no de lo que la hace inválida o algo así.
Michael Krelin - hacker