Как отсортировать строки UTF-8 в Vim?

У меня есть эти строки в Vim:

a
c
b
e
é
f
g

и когда я делаю :%sort, Я получаю это:

a
b
c
e
f
g
é

Очевидно, "é" строка не должна быть в конце, это должно быть после "e" строки. Действительно ли возможно заставить Vim сортировать эти строки правильно? Не используя ключ ASCCI для символов, но фактического символа.

Я также попробовал :!sort (для использования GNU sort утилита), но я получаю тот же результат.

5
задан remi 21 April 2010 в 13:11
поделиться

2 ответа

:% sort и :%! Sort не обязательно работают одинаково. Процитируем : help sort :

Детали сортировки зависят от используемой библиотечной функции. Нет гарантии, что сортировка "стабильна" или соответствует текущему языку. Вам придется попробовать.

С другой стороны, GNU сортирует в соответствии с текущим языковым стандартом. Процитируем man sort :

* ПРЕДУПРЕЖДЕНИЕ * Локаль, указанная средой, влияет на порядок сортировки . Установите LC_ALL = C, чтобы получить традиционный порядок сортировки, который использует собственных байтовых значений.

В моей системе (Ubuntu 9.10 с временно установленным fr_CA.UTF-8) :% sort сортирует так, как если бы был установлен C или POSIX , а :%! Sort сортирует согласно французскому языку.

Я предполагаю, что вы сначала пробовали как :% sort , так и :%! Sort в языковых стандартах, подобных POSIX (которые дали тот же результат), а затем продолжили ваши эксперименты с разными языковыми стандартами, используя только :% sort (который всегда возвращал POSIX-подобный порядок).Вы можете это подтвердить?

4
ответ дан 15 December 2019 в 00:55
поделиться

Я получаю следующее, используя :%! Sort :

a
b
c
e
é
f
g

, что и должно было произойти. Похоже, виновата ваша локаль. Я не уверен, что именно не так, но FWIW, у меня следующие настройки среды: LANG = en_GB.UTF-8

0
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: