pagina oficial from cancel and windows unix vim

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.