2010-04-21 20 views
5

tengo estas líneas en Vim:¿Cómo ordenar las líneas UTF-8 en Vim?

a 
c 
b 
e 
é 
f 
g 

y cuando lo haga :%sort, me sale esto:

a 
b 
c 
e 
f 
g 
é 

Obviamente, la línea "E" no debe estar al final, debe ser después de la línea "e". ¿Es posible hacer que Vim clasifique estas líneas correctamente? No usar la clave ASCCI para los personajes, sino el personaje real.

También probé con :!sort (para usar la utilidad GNU sort) pero obtengo el mismo resultado.

+1

No es tan obvio como crees que es. El orden exacto depende mucho de la configuración regional. Supongo que el local que utilizas no es el que quieres usar. ¿Qué imprime el comando 'locale' en tu sistema? –

+0

Todo es 'fr_CA.UTF-8'. – remi

Respuesta

0

me sale el siguiente usando :%!sort:

a 
b 
c 
e 
é 
f 
g 

que es lo que se supone que sucede. Parece que tu configuración local podría ser la culpable. No estoy seguro de qué es exactamente lo que está mal, pero FWIW, tengo la siguiente configuración de entorno: LANG=en_GB.UTF-8

+0

Lo mismo aquí. Estoy en Ubuntu 9.04 con 'tipo' 6.10. –

+0

Eso es raro, tengo 'LANG = fr_CA.UTF-8' y' LC_ALL = fr_CA.UTF-8'. – remi

3

:%sort y :%!sort no funcionan necesariamente de la misma manera. Para citar :help sort:

Los detalles sobre la clasificación depende de la función de biblioteca usada. No es ninguna garantía de que la clasificación sea "estable" u obedezca la configuración regional actual. Usted tiene que probarlo.

Por otro lado, el ordenamiento de GNU ordena de acuerdo con la configuración regional actual. Para citar man sort:

* ADVERTENCIA * el entorno local especificado por el entorno afecta orden de clasificación. Establezca LC_ALL = C para obtener el orden de clasificación tradicional que utiliza valores de bytes nativos.

En mi sistema (Ubuntu 9.10 con fr_CA.UTF-8 establecer temporalmente) :%sort tipo como si estuviese C o POSIX, mientras :%!sort tipo de acuerdo con el entorno local francés.

Mi conjetura es que usted ha tratado inicialmente tanto :%sort y :%!sort bajo una localización POSIX-como (que produjo el mismo resultado), y luego continuó sus experimentos con diferentes lugares usando :%sort única (que siempre regresado fin POSIX-como) ¿Puedes confirmar eso?

+0

Gracias por la aclaración entre ':% sort' y':%! Sort' en términos de configuración regional. Sin embargo, incluso con 'LC_ALL' establecido en' fr_CA.UTF-8', el comando ':%! Sort' aún ordena incorrectamente las líneas. El problema probablemente no esté relacionado con Vim, ya que ejecutar 'sort' en un archivo en una terminal regular tampoco funciona correctamente. Estoy en una Mac así que ese podría ser el problema. Voy a investigar eso. – remi

+0

Eso es extraño ...Tiene razón en que es mejor enfocarse en el género GNU primero, ya que el problema no parece ser específico de vim. No tengo acceso a una Mac en este momento, así que no puedo ayudarte, pero he encontrado esto: http://discussions.info.apple.com/thread.jspa?messageID=11129073 Tal vez esa discusión es de alguna manera relevante. ¡Buena suerte! – Bolo

Cuestiones relacionadas