Подтвердить что ты не робот

Как отсортировать числовые и буквенные столбцы в Vim

Использование Vim 6.0. Скажем, я редактирую этот файл:

sdfsdg
dfgdfg

34     12
2      4
45     1
34     5

Как отсортировать второй столбец?

4b9b3361

Ответ 1

Если у вас есть доступная оболочка, выберите свои номера и запустите команду

:'<,'>!sort -n -k 2

Если вы наберете это в визуальном режиме, после ввода двоеточия маркеры '<,' > будут автоматически активироваться, и вам придется только набирать оставшуюся часть.

Этот тип команд (: [motion]!) называется фильтрацией. Вы можете узнать больше, посоветовавшись с помощью vim:

:h filter

Ответ 2

Сортировка всех строк во втором столбце N с помощью команды Vim sort, например.

:sort /.*\%2v/ 

Ссылка: vimtips.txt

Ответ 3

Для vim7 я бы пошел за:

:sort n /.*\s/

Это будет сортировать числа, игнорируя текст, сопоставляемый заданным regexp. В вашем случае это второй столбец.

Ответ 4

Сортировка по второму столбцу, выбрав его в визуальном режиме (например, Control + v), затем запустите:

!sort

или сортировать по третьему столбцу

sort -k 3 

или

:sort /.*\%3v/

Альтернативно выберите строки, которые вы хотите сортировать, с помощью команды Shift + v. Затем введите

!sort -k 3n

или используйте приведенный ниже код, чтобы сообщить Vim пропустить первые два слова в каждой строке и отсортировать по следующему:

:%sort /^\S\+\s\+\S\+\s\+/ 

или, например, сортировать по 8-й строке:

:sort /.*\%55v/

"Виртуальная" спецификация - это абсолютное число столбцов, которое обрабатывает пробелы + вкладки как один символ (вкратце, он не учитывает вкладки как восемь пробелов),

поэтому сортировать по последнему столбцу:

:%sort /\<\S\+\>$/ r