Для таких задач мне часто бывает утомительно писать сценарий. Если это нужно сделать только один раз и, возможно, для нескольких файлов, это можно сделать с помощью макроса, если вы откроете файл в vim
и наберете:
GoFAKE SECTION<ESC>
:добавьте поддельный раздел в конце и убедитесь, что он находится в начале строки (возможно, у вас включен cindent
или autoindent
). Это также необходимо для сортировки последнего раздела. gg
:вернуться к началу файла,затем файл начинается с раздела, идущего вниз на одну строку сj
qq
:начать запись макроса в регистр q v
:выбор начала /^\S\+<Enter>
:поиск начала следующего раздела k
:вверх на одну строку :!sort<Enter
:отсортировать раздел nj
:перейти к первому элементу следующего раздела q
:остановить запись макроса @q
:повторить макрос 100@@
:повторить макрос несколько раз (до тех пор, пока не останется разделов)dd
:удалить последнюю строку файла (FAKE SECTION
)Возможно, вы захотите :set lazyredraw
ускорить выполнение макроса.