windows - oficial - Vim: / n vs. / r
vim download windows 10 (8)
:%s/^V^M/^V^M/g
Del mismo modo, lo siguiente hace lo mismo (creo) y es más fácil de escribir.
:%s//r//r/g
No he usado vim en un sistema Unix por un tiempo, pero cuando recuerdo que no había / r, siempre era / n.
Estoy usando gVim en Windows y cuando busco nuevos caracteres de línea uso / n. La búsqueda de / no devuelve nada. Pero cuando reemplazo los caracteres, tengo que usar / r''s. / n me das ^ @
¿Alguien puede explicar lo que está pasando aquí?
Búsqueda:
:set fileformat=unix
:set fileformat=dos
Esto se puede usar en cualquiera de las plataformas para cambiar a la otra codificación.
Bajo Unix, dentro de vim, ^V
+ <enter>
me da un ^M
que es el caracter /r
.
Además, no puede encontrar /r
dentro de vim a menos que le indique que edite el archivo en modo binario, es decir, que no use el modo automático predeterminado donde detecta automáticamente el final de línea. (debe imprimir [dos]
en el estado).
Creo que el problema podría estar en la forma en que Windows y Unix hacen nuevas líneas. El formato para Unix es / n (avance de línea) pero para Windows es / r / n (retorno de carro, avance de línea).
En Windows, si abre un archivo en modo texto, / n se interpreta como los caracteres de nueva línea y salto de línea. Este normalmente no es el caso de los sistemas * nix.
Parece que estás preguntando dos cosas. Un problema es /r
/n
otros han cubierto.
El otro problema es /n
en el lado derecho de una sustitución. Si observa :hs//n
, dice que /n
en la parte de reemplazo de una sustitución se inserta una <NUL>
/ <NL>
, NO una nueva línea.
Si hace un :%s//n//n/
y guarda y abre el archivo en un editor hexadecimal, todos los caracteres ^@
son ASCII 0 (caracteres NUL). El porqué los desarrolladores de Vim usan /n
a la izquierda para el final de la línea y /n
a la derecha para NUL me supera. Pero este comportamiento particular no tiene nada que ver con Windows vs. Unix.
vim hace algunos lío con retorno de carro (/ r) y nuevas líneas (/ n). Por ejemplo, si está en Unix y vi muestra líneas que terminan en ''^ M'' porque son archivos de texto de Windows, una manera fácil de deshacerse de ellos es ingresar el comando
:%s/^V^M/^V^M/g
No parece que debería hacer nada, pero lo hace.
Detrás de escena, Vim usa / r (retornos de carro) para guardar End-of-Lines (sin importar el formato de archivo, que solo importa cuando se lee o escribe el archivo). Vim usa / n para representar NULs. Sin embargo, busca EOL como / n, pero en el reemplazo, / n significa NUL. Se explica en: h sub-replace-sepcial. La búsqueda de / r encontrará los retornos de carro que no fueron parte de la EOL del formato de archivo. Hay una explicación larga en: h formatos de archivo.