2009-06-17 16 views
17

Me di cuenta de que la mayoría de las veces, cuando se utiliza una codificación que no sea 'el inglés estándar', vim no reconoce y no muestra los caracteres correctamente.
Esto se ve más fácilmente abriendo algunos gráficos ascii, o archivos similares fuera de la red, que usan la página de códigos cp437.¿Cómo puedo hacer que vim reconozca la codificación del archivo?

¿Hay alguna manera de hacer que vim compruebe la codificación al abrir un archivo y abrirlo con uno correcto?

¿Qué codificaciones usas, como las más "portátiles" (aquellas con las que la mayor cantidad de usuarios tendrá menos problemas)?

+0

El problema que estamos enfrentando no tiene mucho que ver con Inglés, porque en ASCII faltan muchos signos de puntuación en inglés, como emdashes y algunos símbolos de moneda, incluso en algunos países de habla inglesa. ASCII solo tenía en mente el inglés de EE. UU., Lo que no es realmente "estándar", como a los estadounidenses les gusta fingir que lo es. ;-) –

Respuesta

20

Vim necesita detectar la codificación, y eso va a ser problemático, ya que los archivos no suelen indicar explícitamente sus codificaciones (una excepción obvia son los archivos XML con un atributo de codificación en el encabezado).

Puede forzar Vim para recargar un archivo con una codificación diferente de este modo:

:e ++enc=cp437 

y se puede establecer la codificación predeterminada en su .vimrc si lo desea.

This page tiene más información y enlaces, especialmente wrt. editando Unicode. UTF-8 es la codificación más utilizada, y la predeterminada que probablemente deberías buscar.

+1

Muy agradable ver a gente tan inteligente en todo el mundo.Gracias por una respuesta tan útil;) –

2

Puede usar una línea de modo vim para establecer la codificación del archivo. Esto es simplemente un comentario, en las primeras cinco líneas del archivo, que comienza con vi: set fileencoding=cp437.

También podría comenzar con 'vim:', en lugar de 'vi: set', pero este último lo hace compatible con más editores. Definitivamente necesita el espacio entre cualquiera de estos prefijos y 'fileencoding', o cualquier opción que desee establecer. La opción fileencoding debería resolver su problema, sin embargo.

Así, en Python o un archivo .rc, se puede poner esto en la parte superior de su archivo:

# vi: set fileencoding=cp437 

En Java, C, C++, JavaScript, etc. poner esto:

// vi: set fileencoding=cp437 

Para obtener más información, en vim, escriba :help modeline.

+0

Editado según lo sugerido por el usuario @SumnerHayes, para mostrar que la línea de modo debe ser una de las primeras cinco líneas del archivo. –

0

Puede codificar sus archivos usando unicode y establecer un Byte Order Mark (BOM) en el archivo. Esto hará que vim lo trate apropiadamente, pero algunos compiladores y programas pueden tener problemas con él. Incluso los comandos de shell básicos como cat pueden comportarse mal en algunos casos de uso.

Para hacerlo, escriba esto en vim:

:set fileencoding=utf-8 
:set bomb 
:w 

Para obtener más información, escriba:

:help bomb 
Cuestiones relacionadas