Digamos que tengo el siguiente archivo muy simple
a
b
c
d
e
y he decidido que quiero agregar líneas vacías después de cada línea. Varios métodos diferentes saltan inmediatamente a mi mente. Podríamos hacerlo (y así aceptar el fracaso). Podríamos grabar una macro como qqo<ESC>jq
y repetirla varias veces.
Otros dos métodos me parecieron más obvios en ese momento.
En primer lugar, pensé que emitiría el :norm
comando o
en cada línea. Entonces corro :%norm o
. Pero lo que realmente sucede es que obtenemos 5 líneas en blanco, seguidas por las líneas no separadas como se indicó anteriormente. Interpreto que esto significa que %norm
, en realidad, vim recoge el mensaje emitiendo el siguiente comando normal en las primeras cinco líneas de este archivo de cinco líneas . El o
comando crea una nueva línea y vim es "tonto" en el sentido de que hace referencia por número de línea y no por algún otro identificador.
Bueno, estaba avergonzado. Por supuesto. Intenté algunas otras cosas para ver si podía hacer que el método anterior funcionara, pero, por desgracia, no pude. Por curiosidad, probé mi otro método de aplicación masiva favorito. Esto me llevó a intentarlo :g/^/norm o
. Para mi sorpresa, ¡esto funciona bien! Entonces, a mis ojos, parece que vim no es "tonto" aquí de la misma manera que arriba y hace referencia a las líneas en más que solo el número de línea.
¿Qué está pasando exactamente?
:%s/$/\r/
, o como esto::%s/\n/\r\r/
. La conclusión es que las nuevas líneas pueden coincidir\n
, pero deben escribirse como\r
valores de reemplazo.