Acho que isso é o que você quer: verifique se há uma linha vazia no final do arquivo e junte todos os parágrafos (terminados por uma linha vazia).
G:a
.
:g/^./ .,/^$/-1 join
Explicação: primeiro, vá até o final do arquivo e anexe uma linha extra vazia com :a (talvez haja uma maneira mais elegante de fazer isso; interativamente, você pode substituir as três primeiras linhas por o<ESC> ). Então, para cada linha não vazia que ainda não foi considerada ( :g/^./ ), aplique o comando join ao intervalo começando na linha selecionada ( . ) e terminando uma linha antes da próxima linha vazia ( /^$/-1 ).
Opcionalmente, :g/^$/d se você não quiser que nenhuma linha em branco permaneça (então você pode retirar o -1 ).