Linux vim muestra utf-8 documento confuso cómo hacerlo?

  
                

En el certificado de operación del sistema Linux, Vim es un editor de texto. Cuando se usa Vim, en realidad muestra los documentos de utf-8 confusos. ¿Cómo resolver esta situación? La siguiente pequeña serie le dirá cómo Linux resuelve el problema confuso de los documentos UTF-8 de Vim. Echemos un vistazo.

1. básica introducción conocimiento

En Vim, hay cuatro opciones relacionadas con la codificación, que son: fileencodings, fileEncoding, codificación y termencoding. En uso real, cualquiera de las opciones causará caracteres confusos. Por lo tanto, cada usuario de Vim debe tener claro el significado de estas cuatro opciones. A continuación, detallaremos el significado y el rol de estas cuatro opciones.

(1) codificación

la codificación es el método de codificación de caracteres utilizado internamente por Vim. Cuando configuramos la codificación, todos los búferes, registros, cadenas en el script, etc. dentro de Vim utilizan esta codificación. Cuando Vim está funcionando, si la codificación es inconsistente con su codificación interna, primero convertirá la codificación en una codificación interna. Si el código de trabajo contiene caracteres que no se pueden convertir a codificación interna, estos caracteres se pierden. Por lo tanto, al elegir la codificación interna de Vim, asegúrese de utilizar un código con el rendimiento suficiente para evitar afectar el funcionamiento normal.

Dado que la opción de codificación se refiere a la representación interna de todos los caracteres en Vim, solo se puede configurar una vez cuando se inicia Vim. Modificar la codificación durante el trabajo de Vim puede causar muchos problemas. Se recomienda en el manual del usuario cambiar su valor solo en .vimrc. De hecho, parece que solo tiene sentido cambiar su valor en .vimrc. Si no hay una razón especial, siempre configure la codificación en utf-8. Para evitar menús confusos y avisos del sistema en sistemas que no son UTF-8 como Windows, puede realizar estos ajustes al mismo tiempo:

set encoding = utf-8

set langmenu = zh_CN .UTF-8

mensaje de idioma zh_CN.UTF-8

(2) termencoding

termencoding es el código que Vim usa para la visualización en pantalla. Cuando se muestra, Vim Convierta el código interno en código de pantalla y utilícelo para la salida. Cuando un código interno contiene un carácter que no se puede convertir en un código de pantalla, el carácter se convierte en un signo de interrogación, pero no afecta la operación de edición. Si no se establece termencoding, entonces use la codificación directamente sin conversión.

Por ejemplo, cuando inicie sesión en una estación de trabajo Linux a través de telnet bajo Windows, debido a que Windows telnet está codificado en GBK, y Linux usa la codificación UTF-8, se le interceptará Vim bajo telnet. . En este punto, hay dos formas de eliminar caracteres confusos: una es cambiar la codificación de Vim a gbk, la otra es mantener la codificación como utf-8, cambiar la codificación de término a gbk y dejar que Vim transcodifique cuando se muestre. Obviamente, cuando se usa el método anterior, estos caracteres se perderán si encuentran caracteres en el archivo editado que no pueden ser representados por GBK. Sin embargo, si se usa el último método, aunque estos caracteres no se pueden mostrar debido a la limitación del terminal, estos caracteres no se pierden durante el proceso de edición.

Para GVim bajo la interfaz gráfica, su visualización no depende de TERM, por lo que termocodificación no tiene ningún significado para ella. En GVim bajo GTK2, la codificación de terminología es siempre utf-8 y no se puede modificar. GVim bajo Windows ignora la existencia de termencoding.

(3) fileencoding

Cuando Vim lee un archivo del disco, detectará la codificación del archivo. Si el archivo está codificado de manera diferente a la codificación interna de Vim, Vim convertirá la codificación. Una vez completada la conversión, Vim establecerá la opción de codificación de archivo a la codificación del archivo. Cuando se guarda Vim, si la codificación y la codificación del archivo son diferentes, Vim realizará la conversión de la codificación. Por lo tanto, al configurar la codificación de archivo después de abrir el archivo, podemos convertir el archivo de una codificación a otra. Sin embargo, como se puede ver en la introducción anterior, la codificación de archivos se establece automáticamente por Vim cuando se abre el archivo. Por lo tanto, si está distorsionado, no podemos corregir el error restableciendo la codificación del archivo después de abrirlo.

En resumen, la codificación de archivo es la codificación de caracteres del archivo editado actualmente en Vim. Vim también guarda el archivo como esta codificación de caracteres al guardar el archivo (independientemente de si es un archivo nuevo o no).

(4) fileencodings

El reconocimiento automático del código se logra mediante el establecimiento de fileencodings, preste atención a la forma plural. Fileencodings es una lista separada por comas, y cada elemento de la lista es un nombre codificado. Cuando abrimos el archivo, VIM usa la codificación en codificaciones de archivos para intentar decodificarlo. Si tiene éxito, usa la codificación para decodificar y establecer la codificación de archivos a este valor. Si falla, continuaremos probando la siguiente codificación.

Por lo tanto, al configurar codificaciones de archivos, debemos poner el método de codificación que es más estricto cuando el archivo no es más probable que ocurra este código, y dejar atrás el método de codificación suelta. Por ejemplo, latin1 es un método de codificación muy vago. Cualquier texto obtenido mediante la codificación se decodificará con latin1, y no se producirá ningún fallo en la decodificación. &Mdash; — Por supuesto, el resultado de la decodificación se da naturalmente por sentado. ". Por lo tanto, si coloca latin1 en el primer lugar de codificación de archivos, es normal abrir cualquier archivo chino que esté confuso.

La siguiente es una configuración de codificación de archivos recomendada en línea:

set fileencodings = ucs-bom, utf-8, cp936, gb18030, big5, euc-jp, euc-kr, latin1

Entre ellos, ucs-bom es una codificación muy estricta, y es casi imposible que el archivo codificado se considere incorrecto como ucs-bom, por lo que se coloca primero.

utf-8 también es bastante estricto, a excepción de los archivos muy cortos (por ejemplo, a muchas personas les encanta el código "Unicom" de GBK, que se juzgó erróneamente como un error clásico en la codificación UTF-8), la vida real El archivo general es casi imposible de ser mal juzgado, por lo que se coloca en el segundo lugar.

El siguiente es cp936 y gb18030. Estos dos códigos son relativamente flojos. Si los pones al frente, habrá muchos errores de juicio, así que déjalos atrás. El espacio de codificación de cp936 es más pequeño que gb18030, así que ponga cp936 frente a gb18030.

En cuanto a big5, euc-jp y euc-kr, su rigor es similar al de cp936. Póngalos detrás, habrá muchos errores al editar estos archivos codificados, pero esto es Vim incorporado. No hay nada que pueda ser resuelto por el mecanismo de detección de código. Dado que los usuarios chinos rara vez tienen la oportunidad de editar estos archivos codificados, decidimos colocar cp936 y gb18030 al frente para asegurar la identificación de estos códigos.

El último es latin1. Es un código extremadamente suelto, así que tenemos que ponerlo en el último lugar. Pero desafortunadamente, cuando se encuentra con un archivo con una verdadera codificación latin1, en la mayoría de los casos, no tiene posibilidad de retroceder a latin1, que a menudo se juzga mal en la codificación anterior. Sin embargo, como se mencionó anteriormente, los usuarios chinos no tienen mucho acceso a dichos documentos.

Si el código se juzga mal, los humanos no pueden reconocer el resultado descodificado, por lo que decimos que el archivo está confuso. En este punto, si conoce la codificación correcta de este archivo, puede usar la codificación ++ enc = para abrir el archivo al abrir el archivo, como por ejemplo:

: e ++ enc = utf-8 myfile. Txt

Lo anterior es la solución de Linux para que Vim muestre el método confuso del documento utf-8 introducido, después del problema confuso, se puede resolver al volver a configurar las codificaciones de archivos, espero poder ayudarlo.

Copyright © Conocimiento de Windows All Rights Reserved