Vim сворачивает каждую строку, заканчивающуюся {но не классами

Я намерен сложить все строки, заканчивающиеся на { но не классы. До сих пор я придумал эту команду:

:%g/.\{-}\(class\)\@!.*{$/normal! zf%

Но это будет соответствовать также строки, содержащие class,

1 ответ

Решение

Есть несколько проблем:

  1. От :help /\@!: "Вы не можете использовать"\@!"Для поиска несоответствия перед соответствующей позицией". использование \@<!, включите возможные символы между ними и отбросьте бесполезное (потому что оно не привязано) не жадное первое совпадение.
  2. :global Команда помещает курсор в первый столбец совпадающих строк, поэтому добавьте $ сделать % работать все время.
  3. Последующие внутренние складки должны быть определены с открытой внешней складкой: zv,

Ergo:

:%g/\%(class.*\)\@<!{$/normal! $zvzf%
Другие вопросы по тегам