1

Предположим, у меня есть файл со следующим содержанием:

c
C
b
B
a
A

Когда я делаю :%sort , я получаю следующий результат:

A
B
C
a
b
c

Когда я делаю :%!sort (обратите внимание на '!'), Я получил

a
A
b
B
c
C

Я получаю то же поведение с регулярными выражениями, то есть [AZ] внутри VIM соответствует символам в верхнем регистре, а не [aAbBcC ...].

Вывод "locale":

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Вывод :language внутри VIM:

Current language: 
"LC_CTYPE=en_US.UTF-8;
LC_NUMERIC=C;
LC_TIME=en_US.UTF-8;
LC_COLLATE=en_US.UTF-8;
LC_MONETARY=en_US.UTF-8;
LC_MESSAGES=en_US.UTF-8;
LC_PAPER=en_US.UTF-8;
LC_NAME=en_US.UTF-8;
LC_ADDRESS=en_US.UTF-8;
LC_TELEPHONE=en_US.UTF-8;
LC_MEASUREMENT=en_US.UTF-8;
LC_IDENTIFICATION=en_US.UTF-8"

Согласно ":language" vim должен использовать "сортировку utf8", но, очевидно, это не так.

2 ответа2

1

Из VIM 7.3 «Помогите отсортировать»

The details about sorting depend on the library function used.  There is no
guarantee that sorting is "stable" or obeys the current locale.  You will have
to try it out.
0

(1) я знаю, что это не совсем ответ на главный вопрос, который был задан, и (2) у меня нет доступа к vim прямо сейчас, поэтому я могу быть уверен только в том, что это работает для vi .  Тем не менее, вы можете заставить vi выполнять поиск без учета регистра, набрав :set ignorecase (или :set ic для короткого, или :se ic для более короткого).  Использование :set noic чтобы вернуться к чувствительному к регистру поведению.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .