Какую локаль использует VIM для сортировки и регулярных выражений?


1

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

c
C
b
B
a
A

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

A
B
C
a
b
c

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

a
A
b
B
c
C

Я получаю такое же поведение с регулярными выражениями, т.е. [A-Z] внутри 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", но, очевидно, это не так.

Ответы:


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 вернуться к чувствительному к регистру поведению.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.