tutorial mac help comandos vim

mac - ¿Por qué es / ra newline para Vim?



vim pdf (5)

:help NL-used-for-Nul

Detalle técnico:

<Nul> en el archivo se almacenan como <NL> en la memoria. En la pantalla se muestran como " ^@ ". La traducción se realiza al leer y escribir archivos. Para hacer coincidir un <Nul> con un patrón de búsqueda, solo puede ingresar CTRL-@ o " CTRL-V 000". Esto es probablemente lo que esperas. Internamente, el carácter se reemplaza con un <NL> en el patrón de búsqueda. Lo que es inusual es que al escribir CTRL-V CTRL-J también inserta un <NL> , por lo que también busca un <Nul> en el archivo. {Vi no puede manejar <Nul> caracteres en el archivo en absoluto}

De la pregunta ¿Cómo reemplazar un personaje por una nueva línea en Vim? . Tienes que usar / r al reemplazar el texto por una nueva línea, como esta

:%s/%//r/g

Pero al reemplazar el final de las líneas y las nuevas líneas para un personaje, puedes hacerlo como:

:%s//n/%/g

¿Qué sección del manual documenta estos comportamientos y cuál es la razón detrás de ellos?


De More :

Al buscar

...

/n es nueva línea, /r es CR (retorno de carro = Ctrl-M = ^M )

Cuando se reemplaza

...

/r es una nueva línea, /n es un byte nulo ( 0x00 ).


Desde vim docs en patrones :

coincide con <CR>

/n coincide con un final de línea: al hacer coincidir una cadena en lugar de un texto de búfer, se hace coincidir un carácter de nueva línea literal.


En primer lugar, abra :h :s para ver la sección "4.2 Sustituto" de la documentación sobre "Cambio". Esto es lo que acepta el comando:

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

Observe la descripción sobre el pattern y la string

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

Así que ahora sabes que el patrón de búsqueda y los patrones de reemplazo siguen reglas diferentes. Si sigues el enlace a |pattern| , lo lleva a la sección que explica todos los patrones de expresión regular utilizados en Vim.

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

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


Otro aspecto de esto es que /0 , que tradicionalmente es NULL, se toma en s///0/ para significar "todo el patrón coincidente". (Que, por cierto, es redundante con, y más largo que, & ).

  • Por lo tanto, no puede usar /0 para significar NULL , por lo que usa /n
  • Por lo tanto, no puede usar /n para significar /n , por lo que usa /r .
  • Así que no puedes usar /r para significar /r , pero no sé quién querría agregar ese char a propósito.

—☈