Cómo sustituir un carácter por una nueva línea en Vim
Estoy tratando de reemplazar cada ,
en el archivo actual por una nueva línea:
:%s/,/\n/g
Pero inserta lo que parece un ^@
en lugar de una nueva línea real. El archivo no está en modo DOS ni nada por el estilo.
¿Qué debo hacer?
Si tienes curiosidad, como yo, revisa también la pregunta ¿Por qué \r es una nueva línea para Vim?.
1859
3
Use
\r
en lugar de\n
.La sustitución por
\n
inserta un carácter nulo en el texto. Para obtener una nueva línea, utilice\r
. Sin embargo, al buscar una nueva línea, se debe usarn
. Esta asimetría se debe al hecho de que "n" y "r" [hacen cosas ligeramente diferentes] (http://vim.wikia.com/wiki/Search_and_replace):\n
coincide con un final de línea (nueva línea), mientras que\r
coincide con un retorno de carro. Por otra parte, en las sustituciones\n
inserta un carácter nulo mientras que\r
inserta una nueva línea (más precisamente, se trata como la entrada ). He aquí un pequeño ejemplo no interactivo para ilustrar esto, utilizando la función de línea de comandos de Vim (en otras palabras, puedes copiar y pegar lo siguiente en un terminal para ejecutarlo).xxd
muestra un volcado hexadecimal del archivo resultante.En otras palabras,
\n
ha insertado el byte 0x00 en el texto;\r
ha insertado el byte 0x0a.Es necesario utilizar
Para obtener el carácter
^M
, pulse Ctrl v seguido de Enter.r
puede hacer el trabajo aquí por ti.