2010-04-21 37 views
5

tôi có những dòng này trong Vim:Cách sắp xếp các dòng UTF-8 trong Vim?

a 
c 
b 
e 
é 
f 
g 

và khi tôi làm :%sort, tôi có được điều này:

a 
b 
c 
e 
f 
g 
é 

Rõ ràng, "é" dòng không nên ở cuối, nó phải được sau dòng "e". Có thể để có được Vim để sắp xếp các dòng này một cách chính xác? Không sử dụng khóa ASCCI cho nhân vật mà là nhân vật thực sự.

Tôi cũng đã thử với :!sort (để sử dụng GNU sort utiliy) nhưng tôi nhận được kết quả tương tự.

+1

Nó không hiển nhiên như bạn nghĩ. Thứ tự chính xác phụ thuộc rất nhiều vào ngôn ngữ. Tôi đoán là địa phương bạn sử dụng không phải là địa chỉ bạn muốn sử dụng. Lệnh 'locale' in trên hệ thống của bạn là gì? –

+0

Mọi thứ đều là 'fr_CA.UTF-8'. – remi

Trả lời

0

tôi nhận được sau sử dụng :%!sort:

a 
b 
c 
e 
é 
f 
g 

đó là những gì được cho là xảy ra. Có vẻ như miền địa phương của bạn đã được thiết lập có thể là nguyên nhân. Tôi không chắc chắn những gì chính xác là sai, nhưng FWIW, tôi có môi trường sau đây thiết lập: LANG=en_GB.UTF-8

+0

Tương tự ở đây. Tôi đang ở trên Ubuntu 9,04 với 'sort' 6.10. –

+0

Thật kỳ lạ, tôi có 'LANG = fr_CA.UTF-8' và' LC_ALL = fr_CA.UTF-8'. – remi

3

:%sort:%!sort không nhất thiết làm việc trong cùng một cách. Để báo giá :help sort:

Chi tiết về cách sắp xếp phụ thuộc vào chức năng thư viện được sử dụng. Có không đảm bảo rằng việc sắp xếp là "ổn định" hoặc tuân theo ngôn ngữ hiện tại. Bạn sẽ phải dùng thử.

Mặt khác, sắp xếp GNU sắp xếp theo ngôn ngữ hiện tại. Để báo man sort:

* Chú ý * Nơi đặt theo quy định của môi trường ảnh hưởng đến thứ tự sắp xếp. Đặt LC_ALL = C để nhận thứ tự sắp xếp truyền thống sử dụng giá trị byte gốc .

Trên hệ thống của tôi (Ubuntu 9.10 với fr_CA.UTF-8 tạm thời đặt) :%sort loại như nếu C hoặc POSIX được thành lập, trong khi :%!sort loại theo miền địa phương Pháp.

tôi đoán là bạn đã bước đầu thử cả :%sort:%!sort dưới một miền địa phương POSIX-like (mà mang lại kết quả tương tự), và sau đó tiếp tục thử nghiệm của bạn với địa phương khác nhau duy nhất sử dụng :%sort (mà luôn luôn trở POSIX giống như thứ tự). Bạn có thể xác nhận điều đó không?

+0

Cảm ơn bạn đã làm rõ giữa ':% sort' và':%! Sort' về ngôn ngữ. Tuy nhiên, ngay cả khi 'LC_ALL' được đặt thành' fr_CA.UTF-8', lệnh ':%! Sort' vẫn sắp xếp không chính xác các dòng. Vấn đề có lẽ không liên quan đến Vim, khi chạy 'sort' trên một tệp trong một thiết bị đầu cuối thông thường cũng không hoạt động chính xác. Tôi đang ở trên máy Mac để có thể là vấn đề. Tôi sẽ xem xét điều đó. – remi

+0

Lạ thật ...Bạn nói đúng là nên tập trung vào GNU sắp xếp đầu tiên, vì vấn đề không có vẻ cụ thể. Tôi không có quyền truy cập vào máy Mac ngay bây giờ, vì vậy tôi không thể giúp bạn, nhưng tôi đã tìm thấy điều này: http://discussions.info.apple.com/thread.jspa?messageID=11129073 Có thể cuộc thảo luận đó là bằng cách nào đó có liên quan. Chúc may mắn! – Bolo

Các vấn đề liên quan