Как отсортировать числовые и буквенные столбцы в Vim - PullRequest
40 голосов
/ 31 августа 2009

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

sdfsdg
dfgdfg

34     12
2      4
45     1
34     5

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

Ответы [ 4 ]

44 голосов
/ 31 августа 2009

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

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

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

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

:h filter
35 голосов
/ 31 августа 2009

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

:sort /.*\%2v/ 

Ссылка: vimtips.txt

17 голосов
/ 31 августа 2009

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

:sort n /.*\s/

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

15 голосов
/ 27 марта 2013

Сортировка по 2-му столбцу, выбрав его в визуальном режиме (например, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...