Vi en Linux: muestra ^ M terminaciones de línea para archivos en formato DOS


10

En Solaris, si abre un archivo en vi que tiene terminaciones de línea de Windows, esto aparece como ^ M al final de cada línea.

En Linux, vi es más inteligente y entiende el formato de archivo de Windows, y no muestra ^ M.

¿Hay alguna configuración para hacer que Linux vi se comporte igual que Solaris a este respecto?

Un problema común para nosotros es copiar un script de shell de un cuadro de desarrollo (Windows) y olvidarse de dos2unix, y luego confundirse cuando no funciona correctamente. En Solaris, el problema es obvio apenas se visualiza el archivo, pero no en Linux.

Gracias.


En Linux, vi suele ser el vim de Bram Moolenaar , espero que el vi en Solaris sea el Bill Joy vi , original, auténtico pero menos capaz.
RedGrittyBrick

En mi vim, por defecto, generalmente no veo ^M, pero a veces hay uno al final del archivo.
trysis

Respuestas:


10

Intente :set ffs=unixal iniciar vi (o establecer como predeterminado en vimrc) que debería mostrar todos los caracteres CR como ^M.

vi auto-adivina qué formato usar en función de si encuentra o no líneas que terminan en LF o CR / LF.


2
@RedGrittyBrick: en mi sistema, se :set listmuestra $al final de todas las líneas (formato Unix y DOS), por lo que no ayuda a distinguir entre los dos.
sss

@sss: Mi error, eliminaré el comentario.
RedGrittyBrick

2
@gman: este comando no funcionó para mí precisamente, lo conseguí Not an editor command: ffs=unix, pero me puso en el camino correcto. Ejecutar :set ffs=unixcon el archivo abierto en vi no funcionó, no hubo error pero no sucedió nada. Puse set ffs=unixmi archivo .vimrc y funcionó.
sss

Experimenté exactamente lo mismo que @sss
SSH Este

Por lo tanto, corrompe la configuración de usuario cuidadosamente preparada. Lo más probable es que quiera ffsexactamente lo que es. Pero mira la respuesta de @wisbucky.
fork0

2

Para mostrar las terminaciones de dos líneas para el archivo actual:

:e +ff=unix

Esto fuerza el formato de archivo a Unix, que se representará CRcomo^M


Para hacer esta configuración permanente, agregue a ~/.vimrc:

set ffs=unix

Tenga en cuenta que la configuración .vimrc es ffs, no ff.


Esto debería ser :e ++ff=unix, creo.
fork0

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.