Blog atrasado con gajes del oficio

Reemplazos en Vim

Estos son algunos de los reemplazos que se pudieran realizar en vim:

:s/\zs/\r/g

will have this string of characters: abcdefghi

tendrá esta cadena de caracteres: abcdefghi

result:

a
b
c
d
e
f
g
h
i

Por otra parte la siguiente ejecución:

:s/\s/\r/g 

will have

esto es una prueba

result:

esto
es
una
prueba

and :s/\n//g

will have something like

a
b
c
d

results:

abcde

:s/\n/ /g

will have something like

esto
es
una
prueba

result: esto es una prueba

por supuesto, se puede ver que en algunos casos se utiliza \n, mientras que en otros se utiliza \r, es necesario recordar que en cada reemplazo y substitución en vim, se logra mediante :s/texto para reemplazar/substituir con.

Primero antes que todo el delimitador de barra oblicua / es la separación de lo que se quiere modificar con lo que se modificaría.

Es decir, por ejemplo, donde texto para reemplazar es la expresión regular que se desea cambiar, o los caracteres del texto que se desean modificar, mientras que substituir con es el nuevo ingreso que tomará lugar.

En este caso, para entender este procedimiento, no hay mejor ayuda en vim, que ir directo a la documentación con :help \n o mediante :h \n para abreviar, y también entender el por qué difiere de :help \r

Creo que una de las mejores respuestas sobre esto, se encuentra en http://stackoverflow.com/a/18961239 que especifica que “in the syntax s/foo/bar, \r and \n have different meanings depending on context.

En nuestro caso sería s/texto para reemplazar/substituir con.

Por lo tanto esto equivaldría a:

En el caso de texto para reemplazar, es decir, s/<texto para reemplazar> antes del segundo delimitador /:
\n sería una newline o un salto de línea.
\r en este caso sería CR que es la tecla Enter, tecla de retorno o de regreso.

En el caso de substituir con, es decir, s/<texto para reemplazar>/<substituir con>, o los caracteres que se encuentren después de la segunda barra /:
\n seria un octeto nulo
\r en este caso es una newline o un salto de línea.