Poder de g:
:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq
A parte entre /s é bastante auto-explicativa, pois é o regex da sua pergunta original.
normal gngqno final é um pouco interessante. gnselecionará a próxima correspondência da expressão regular e gq, é claro, formata essa seleção (como você mencionou na sua pergunta).
:gé a parte realmente ótima. Este é, na minha opinião, um dos recursos mais úteis do Vim. O gcomando ex usa um regex e um comando Ex e executa o comando em todas as linhas correspondentes ao regex. Se você ainda não aprendeu :g, eu recomendo fazê-lo, pois aumentará bastante sua produtividade. Alguns recursos são do Vim :help :gou do Power of g no wiki do Vim.
gnpeça está selecionando da linha em queVé acionada até a próxima ocorrência (não a da mesma linha) do padrão. A documentação do Vim afirma que, se o modo visual estiver ativo, a seleção será estendida da linha atual até o próximo padrão. Isso está causando comportamento indesejado.