Poder de g
:
:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq
La parte entre los /
s se explica por sí misma, ya que es la expresión regular de su pregunta original.
normal gngq
Al final es algo interesante. gn
seleccionará la próxima coincidencia de la expresión regular y gq
, por supuesto, formateará esta selección (como mencionó en su pregunta).
:g
Es la parte realmente genial. Esta es, en mi opinión, una de las características más útiles de Vim. El g
comando ex toma una expresión regular y un comando Ex, y ejecuta el comando en cada línea que coincida con la expresión regular. Si aún no se ha enterado :g
, le recomiendo que lo haga, ya que aumentará enormemente su productividad. Algunos recursos son los propios de Vim :help :g
o Power of g en Vim wiki.
gn
pieza se selecciona de la línea dondeV
se dispara a la siguiente aparición (no la de la misma línea) del patrón. La documentación de Vim establece que si el modo visual está activo, la selección se extiende desde la línea actual hasta el siguiente patrón. Esto está causando un comportamiento no deseado.