Я думаю, что это делает то, что вы хотите: убедитесь, что в конце файла есть пустая строка, затем присоедините каждый абзац (завершается пустой строкой).
G:a . :g/^./ .,/^$/-1 join
Объяснение: сначала перейдите в конец файла и добавьте дополнительную пустую строку с помощью :a
(возможно, есть более элегантный способ сделать это; интерактивно вы можете заменить первые три строки на o<ESC>
). Затем для каждой непустой строки, которая еще не была рассмотрена ( :g/^./
), примените join
команду к диапазону, начиная с выбранной строки ( .
) и заканчивая одной строкой перед следующей пустой строкой ( /^$/-1
).
По желанию, :g/^$/d
если вы не хотите, чтобы оставалась пустая строка (вы можете убрать -1
).