У меня есть эти строки в Vim:
a
c
b
e
é
f
g
и когда я делаю :%sort
, Я получаю это:
a
b
c
e
f
g
é
Очевидно, "é" строка не должна быть в конце, это должно быть после "e" строки. Действительно ли возможно заставить Vim сортировать эти строки правильно? Не используя ключ ASCCI для символов, но фактического символа.
Я также попробовал :!sort
(для использования GNU sort
утилита), но я получаю тот же результат.
:% 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-подобный порядок).Вы можете это подтвердить?
Я получаю следующее, используя :%! Sort
:
a
b
c
e
é
f
g
, что и должно было произойти. Похоже, виновата ваша локаль. Я не уверен, что именно не так, но FWIW, у меня следующие настройки среды: LANG = en_GB.UTF-8