Pregunta

De la pregunta Cómo reemplazar un personaje para una nueva línea en Vim?.Usted tiene que usar cuando la sustitución de texto para una nueva línea, como este

:%s/%/\r/g

Pero cuando la sustitución final de las líneas y saltos de línea para un personaje, puedes hacerlo así:

:%s/\n/%/g 

¿En qué sección del manual de los documentos de estos comportamientos, y cuál es el razonamiento detrás de ellos?

¿Fue útil?

Solución

De vim docs en los patrones de:

\r los partidos <CR>

\n coincide con un fin-de-línea - Cuando la coincidencia en una cadena en lugar de búfer de texto literal de un salto de línea el carácter es correspondido.

Otros consejos

De http://vim.wikia.com/wiki/Search_and_replace :

Cuando La Búsqueda

...

\n es el salto de línea, \r es CR (retorno de carro = Ctrl-M = ^M)

Cuando La Sustitución De

...

\r es el salto de línea, \n es un byte nulo (0x00).

Otro aspecto de esto es que \0, el cual tradicionalmente es NULL, se toma en s//\0/ significa "el todo igualado patrón".(Que, por cierto, es redundante, y más, &).

  • No se puede utilizar \0 a decir NULL, por lo que el uso \n
  • No se puede utilizar \n a decir \n, por lo que el uso \r.
  • No se puede utilizar \r a decir \r, pero no sé que quiere añadir que char a propósito.

—☈

:help NL-used-for-Nul

Detalles técnicos:

<Nul> los caracteres en el archivo se almacenan como <NL> en memoria.En la pantalla ellos se muestran como "^@".La traducción se realiza cuando la lectura y la escritura los archivos.Para que coincida con un <Nul> con un patrón de búsqueda sólo puede entrar en CTRL-@ o "CTRL-V 000".Esto es probablemente lo que usted espera.Internamente, el el carácter es reemplazado con un <NL> en el patrón de búsqueda.Lo que es inusual es que escribir CTRL-V CTRL-J también se inserta una <NL>, así también, se busca un <Nul> en el archivo.{Vi no puede manejar <Nul> los caracteres en el archivo}


En primer lugar, abre :h :s consulte la sección "4.2 Sustituto" de la documentación sobre el "Cambio".Aquí está lo que el comando acepta:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

Observe la descripción acerca de pattern y string

Para el {pattern} ver |pattern|.
{string} puede ser un literal de cadena, o algo
especial;ver |sub-replace-special|.

Así que ya sabes que el patrón de búsqueda y reemplazo de los patrones siguen reglas diferentes.Si usted sigue el enlace |pattern|, se accede a la sección en la que se explica todo el regexp los patrones utilizados en Vim.

Mientras tanto, |sub-replace-special| lleva a la subsección de "4.2 Sustituto", que contiene los patrones de sustitución, entre los que se \r para el salto de línea/split.

(El acceso directo a esta parte del manual es :h :s%)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top