No modo normal, J (diferentemente de j , que move o cursor uma linha para baixo) é usado para unir uma linha com a linha logo abaixo dela. No entanto, por padrão, ele adiciona um espaço ao final da primeira linha; para obter o resultado desejado (unindo as linhas sem inserir um espaço adicional), seria necessário usar gJ .
Para usar comandos de modo normal no modo ex (que você insere pressionando : enquanto estiver no modo normal), deve-se usar o comando normal . Veja :h normal dentro do vim. Então, para trabalhar com a próxima linha que combina com o padrão, deve-se usar (note que por padrão, você tem que escapar do + para fazê-lo funcionar com o regex do vim, uma conseqüência de manter compatibilidade com o antigo regex do vi original motor):
:/^a.\+g$/normal gJ
Para trabalhar em todas as linhas que correspondam ao padrão, seria necessário usar o comando :global (consulte :h :g no vim) da seguinte forma:
:global/^a.\+g$/normal gJ
Ou mais concisamente:
:g/^a.\+g$/norm gJ
Também é possível usar o comando ex join (consulte :h :join ) para obter a mesma coisa com um pouco menos de digitação (o ! no final, nesse caso, informa join para não inserir um espaço no final da primeira linha).
:g/^a.\+g$/join!