#function #sorting #vim
#функция #сортировка #vim
Вопрос:
В моем файле menu.vim много функций.
Было бы возможно выбрать их (мной) и отсортировать их по имени функции?
p.e.
найдите строки из fun! или функция!
для завершения строки
найдите имя функции и отсортируйте весь блок на основе имени функции (от адоя)
Иногда у меня есть одна строка комментария над именем функции.
Можно ли это использовать вместе с ним?
Ответ №1:
Это может быть немного сложно, но вот предварительный способ сделать это:
- выберите шаблон подстановки, которого нет в вашем исходном файле, например @@@
g/fun%[ction]!= /,/endf%[unction]/ s/$n/@@@
- Затем выберите все однострочники и используйте
'<,'>sort /fun%[ction]!=/
%s/@@@/r/g
Комментарии:
1. @Benoit, отличная идея :)… но что-то не работает в моем файле. E486: Шаблон не найден: функция %[ction]!= —> Я провел тест с использованием 2 функций: 1) функция! s: меньший размер после (типа) —> endfun 2) функция! s:EmptyBeforeAfterRegex(тип) —> endfun
2. @Benoit, как я могу это проверить? Я пробовал это: echo amp; magic -> вывод -> 1
3. @Remonn: функция не является альтернативным написанием для функции. Поэтому я предлагаю вам автоматически исправить мои собственные ошибки
![]()
4. @Remonn Вероятно, это потому, что Бенуа забыл добавить косые черты вокруг
endfun
шаблона (а так и должно быть/endf/
, а не/endfun/
).5. Кстати, в большинстве случаев вероятность того, что в исходном файле будет один нулевой байт, намного меньше, чем в любых других строках ASCII и большинстве строк unicode, поэтому
@@@
, вероятно, лучше заменить наn
.