Сортировка строк с помощью vim по фрагментам строк

Могу ли я сортировать строки в vim в зависимости от части строки, а не всей строки? например

My Name is Deus Deceit

Я хотел бы сортировать в зависимости от столбца, имя которого начинается + 6 столбцов, например, сортировать по столбцу 19-25, и vim будет проверять только эти символы для сортировки. Если это можно сделать без плагина, было бы здорово. ты


person Not Amused    schedule 30.11.2012    source источник


Ответы (1)


Проверьте :help :sort. Команда принимает параметры {pattern}, совпадающий текст которых пропускается (т. е. сортировка происходит после совпадения.

Например, для сортировки по столбцу 19+ (см. :help /\%c и соответствующие атомы регулярного выражения):

:sort /.*\%19c/
person Ingo Karkat    schedule 30.11.2012
comment
Спасибо за ответ, но... Я использую vim уже 2 дня. Так что то, что вы только что напечатали, действительно не имеет для меня никакого смысла... может быть, мне просто стоит сдаться :S - person Not Amused; 30.11.2012
comment
Спасибо за указатель помощи! Возможно, :sort r /\%19c.*\%25c/ является улучшением? - person Niloct; 30.11.2012
comment
Дело в том, что я не хочу просто набирать команду, понятия не имею, как она работает. Можете ли вы добавить объяснение того, что делает что в этой строке, пожалуйста? Это было бы очень полезно, и понимание этого позволило бы мне делать это снова и снова в различных ситуациях, вместо того, чтобы возвращаться на форум и вводить один и тот же вопрос с разными значениями. Я знаю, что очевидно, какие значения я должен изменить для разных обстоятельств, но я думаю, вы поняли мою точку зрения. Тай - person Not Amused; 30.11.2012
comment
r означает сортировку по шаблону регулярного выражения (внутри / и /). Шаблон соответствует всему между 19-м и 25-м столбцами (т. е. 19-й столбец — это \%19c, а .* фиксирует то, что находится между этими столбцами) - person Niloct; 30.11.2012
comment
Да, это понятно, но все же кажется, что мне нужно многому научиться. ТЮ - person Not Amused; 30.11.2012
comment
Не могли бы вы сказать мне, где я могу найти документацию для всех этих %19c или .* и т.д.? - person Not Amused; 30.11.2012
comment
.* — это регулярное выражение, . соответствует любому символу, а * означает zero or more ocurrences of the before. Мой друг только что сделал классное приложение, игру RegExp, которую вы можете перевести с помощью Google (мы из Бразилии :)) games.vidageek.net/play/regex/task/0 - person Niloct; 30.11.2012
comment
Через два дня пользовательская сортировка уже стала довольно сложной темой :-) Совет: изучите, как организована встроенная :help, как вы перемещаетесь по ней, и читайте, читайте, читайте. Это очень полезно и подробно; Я уже включил указатели в свой ответ. И будьте терпеливы с Вимом; после 10 с лишним лет с Vim я все еще узнаю что-то новое каждый день... - person Ingo Karkat; 30.11.2012