2010-04-21 5 views
5

mam te linie w vim:Jak sortować linie UTF-8 w Vimie?

a 
c 
b 
e 
é 
f 
g 

i kiedy zrobić :%sort, mam to:

a 
b 
c 
e 
f 
g 
é 

Oczywiście, linia "E" nie powinno być na końcu, powinno być po linii "e". Czy jest możliwe, aby Vim posortował te linie poprawnie? Nie używanie klucza ASCCI do znaków, ale rzeczywisty znak.

Próbowałem również z :!sort (do korzystania z GNU sort utiliy), ale otrzymuję taki sam wynik.

+1

To nie jest tak oczywiste, jak myślisz. Dokładna kolejność zależy w dużej mierze od ustawień regionalnych. Domyślam się, że lokalny, którego używasz, nie jest tym, którego chcesz użyć. Co polecenie "locale" drukuje w twoim systemie? –

+0

Wszystko to "fr_CA.UTF-8". – remi

Odpowiedz

0

uzyskać następujące używając :%!sort:

a 
b 
c 
e 
é 
f 
g 

co jest, co ma się wydarzyć. Wygląda na to, że twoja lokalizacja locale może być winna. Nie jestem pewien, co dokładnie jest nie tak, ale FWIW, mam następujące ustawienie środowiska: LANG=en_GB.UTF-8

+0

To samo tutaj. Jestem na Ubuntu 9.04 z 'sort'em 6.10. –

+0

To dziwne, mam 'LANG = fr_CA.UTF-8' i' LC_ALL = fr_CA.UTF-8'. – remi

3

:%sort i niekoniecznie działają w ten sam sposób. Zacytować :help sort:

szczegóły dotyczące sortowania zależą funkcja biblioteki. Istnieje bez gwarancji, że sortowanie jest "stabilne" lub jest zgodne z bieżącymi ustawieniami regionalnymi. Będziesz musiał wypróbować to na .

Z drugiej strony sortowanie GNU sortuje według bieżących ustawień narodowych. Zacytować man sort:

* UWAGA * Ustawienia regionalne określone przez środowisko wpływa porządek. Ustaw LC_ALL = C, aby uzyskać tradycyjną kolejność sortowania, która używa wartości rodzimych bajtów .

W moim systemie (Ubuntu 9.10 z fr_CA.UTF-8 chwilowo ustawione) :%sort rodzaju jakby C lub POSIX została ustalona, ​​natomiast :%!sort sortuje według lokalizacji francuskiej.

Domyślam się, że już na początku próbowała zarówno :%sort i :%!sort pod locale POSIX-like (co dało ten sam wynik), a następnie kontynuował swoje eksperymenty z różnych lokalizacjach za pomocą :%sort tylko (które zawsze zwrócone POSIX jak zamówienie). Czy możesz to potwierdzić?

+0

Dzięki za wyjaśnienie między ':% sort' i':%! Sort' pod względem lokalizacji. Jednak nawet przy 'LC_ALL' ustawionym na' fr_CA.UTF-8', komenda ':%! Sort' nadal nieprawidłowo sortuje linie. Problem prawdopodobnie nie jest związany z Vimem, ponieważ uruchamianie 'sort' na pliku w zwykłym terminalu również nie działa poprawnie. Jestem na komputerze Mac, więc to może być problem. Zajrzę w to. – remi

+0

To dziwne ...Masz rację, że lepiej najpierw skupić się na sortowaniu GNU, ponieważ problem nie wygląda na specyficzny dla vim. Nie mam teraz dostępu do komputera Mac, więc nie mogę ci pomóc, ale znalazłem to: http://discussions.info.apple.com/thread.jspa?messageID=11129073 Może ta dyskusja jest jakoś istotne. Powodzenia! – Bolo