Ver saltos de línea y retornos de carro en el editor

180

¿Alguien sabe de un editor de texto en Linux que me permita ver saltos de línea y retornos de carro? ¿Vim admite esta función?

prueba de uso
fuente
1
NOTA: a veces la nueva línea ($) y el retorno de carro (^ M) están ocultos en MUCHOS esquemas de color, y también cuando se usa masilla para ssh.
Vanessa Sanchez
1
OP Creo que debería reconsiderar la respuesta seleccionada. ya que la respuesta seleccionada no funciona. pero la respuesta de CaptSaltyJack funciona bien.
JavaSheriff
OP Lo que mostrará AMBOS es la solución de @arno. Necesitaba VER AMBOS, porque tengo un archivo al azar usando los 3 formatos de archivo ... Y la solución de arno funciona
Wayne Walker

Respuestas:

139

:set listen Vim mostrará espacios en blanco. El final de las líneas se muestra como " $" y los retornos de carro generalmente se muestran como " ^M".

jay.lee
fuente
2
La misma pregunta aquí: superuser.com/questions/97692/…
Alec Jacobson el
254
Incorrecto, :set listNO mostrará ^Mcaracteres (CR). Proporcionar la -bopción de vi / vim funcionará. O, una vez que se carga vim, escriba::e ++ff=unix
CaptSaltyJack
15
Para su información, para desactivar el modo "set list", use:set nolist
Tomofumi el
¡@Tomofumi, una edición con tu percepción será bienvenida!
Pipo
1
Respuesta incorrecta. : la lista establecida NO mostrará ^ M caracteres (CR). Use la opción -b para vi / vim funcionará.
nanosoft
265

Para no estar de acuerdo con la respuesta oficial:

:set listse no mostrar caracteres ^ M (CRS). Proporcionar la opción -b a vi / vim funcionará. O, una vez que se carga vim, escriba :e ++ff=unix.

CaptSaltyJack
fuente
44
Es la sintaxis. :help editmuestra e[dit]! [++opt] [+cmd]. Y :help ++edice que el argumento [++ opt] puede usarse para forzar el valor de 'fileformat' [..] .
dennis
19
solo para aclarar, :set listmuestra nueva línea ( $), :e ++ff=unixmuestra CR ( ^M); si quieres ver ambos, :set listentonces:e ++ff=unix
Yibo Yang
55
Para ampliar el comentario de @ dennis, :set ff=unixle dice a Vim que cambie las terminaciones de línea al estilo unix (como parte de la configuración del formato de archivo), de modo que los caracteres ^ M ya no estén allí (y, por lo tanto, no se muestren). :e ++ff=unixle dice que establezca forzosamente el formato de archivo como si unixrealmente no cambiara el contenido. Entonces vim lo lee como un archivo Unix, ve los caracteres CR como extra y los muestra como ^ M.
Sundar - Restablecer Mónica
2
Ninguno de los dos todavía no funciona para mí vimpor alguna razón ... No me refiero a ninguna -bopción, ni :e ++ff=unixcuando
estoy
3
De acuerdo, e ++ ff = unix funcionó. Ahora, ¿cómo lo apago?
Croo
78

VI muestra nuevas líneas (caracteres LF, código x0A) mostrando el texto posterior en la línea siguiente.

Use el -binterruptor para el modo binario. Por ejemplo vi -b filenameo vim -b filename --.

Luego mostrará los caracteres CR ( x0D), que normalmente no se usan en archivos de estilo Unix, como los caracteres ^M.

Larry K
fuente
Por lo general, no necesito ver el final de la línea, porque principalmente trabajo en el Unixentorno. Pero me gustaría que me advirtieran sobre las terminaciones de línea de tipo Windows si hay alguna en el archivo. ¿Se mostrará vi -b filenameo :set binarysolo se mostrará ^Msi es un archivo de tipo Windows y no hay otras terminaciones de línea?
alpha_989
31

Solo para aclarar por qué :set listno mostrará los CR como ^Msin e ++ff=unixy por qué :set listno tiene nada que ver con ^Mlos de.

Internamente, cuando Vim lee un archivo en su búfer, reemplaza todos los caracteres de final de línea con su propia representación (llamémosla $). Para determinar qué caracteres deben eliminarse, primero detecta en qué formato se guardan las terminaciones de línea en un archivo. Si solo hay CRLF '\r\n'o solo CR '\r'o solo '\n'caracteres de final de línea LF , entonces 'fileformat'se establece en dos, macy unixrespectivamente.

Cuando listse establece la opción, Vim muestra el $carácter cuando se produce el salto de línea, sin importar qué fileformatopción se haya detectado. Utiliza su propia representación interna de saltos de línea y eso es lo que muestra.

Ahora, cuando escribe búfer en el disco, Vim inserta caracteres de final de línea de acuerdo con las fileformatopciones que se han detectado, esencialmente convirtiendo todos los internos $con caracteres apropiados. Si fileformatsucedió, unixentonces simplemente escribirá \nen lugar de su salto de línea interno.

El truco es obligar a Vim a leer un dosarchivo codificado como unixuno. El efecto neto es que va a quitar todo \n's dejando \r' s sin tocar y mostrarlos como ^M's en el búfer. La configuración :set listtambién mostrará finales de línea internos como $. Después de todo, ves ^M$en lugar de dossaltos de línea codificados.

También :set listtenga en cuenta que no tiene nada que ver con mostrar ^M's. Puede verificarlo usted mismo (asegúrese de haber deshabilitado listprimero la opción) insertando un solo CR usando CTRL-Vseguido Enteren modo de inserción. Después de escribir el búfer en el disco y volver a abrirlo, verá a ^Mpesar de que la listopción esté configurada en 0.

Puede encontrar más información sobre los formatos de archivo en http://vim.wikia.com/wiki/File_format o escribiendo :help 'fileformat'Vim.

Paweł Smolak
fuente
11

Prueba el siguiente comando.

: establecer binario

En VIM, esto debería hacer lo mismo que usar la opción de línea de comando "-b". Si coloca esto en su archivo de inicio (es decir .vimrc), siempre estará en su lugar.

En muchos sistemas * nix, hay un comando "dos2unix" o "unix2dos" que puede procesar el archivo y corregir cualquier problema sospechoso de finalización de línea. Si no hay ningún problema con los finales de línea, los archivos no se cambiarán.

Brian S. Wilson
fuente
Lamentablemente en mi sistema (Ubuntu 16.04) set binaryno es lo mismo que vim -b filename.py. ¿Alguna idea de por qué? Verifiqué el helpy parece que lo que dices es generalmente correcto. ¿Cómo puedo entender por qué esto es así?
alpha_989
:e ++ff=unixmuestra ^Mcorrectamente y no muestra cuando uso unixarchivos de tipo ... Así que supongo que el problema está resuelto por ahora ...
alpha_989
6

Le sugiero que edite su archivo .vimrc, para ejecutar una lista de comandos. Edite su archivo .vimrc, así:

cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF

Cuando ejecutas vim, los comandos en .vimrc se ejecutan y puedes ver este ejemplo:

My line with CRLF eol here ^M¶
Arno
fuente
2

usando caty -Apuede ver nuevas líneas como $, pestañas como^I
cat -A myfile

mirhossein
fuente
0

Puede ver las líneas de corte con el editor gedit .

Primero, si no tienes instalado:

sudo apt-get install gedit

Ahora, instale complementos gedit :

sudo apt-get install gedit-plugins

y seleccione el complemento Dibujar espacios , ingrese en Preferencias y elija Dibujar nuevas líneas

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Usando VSCode puede instalar la extensión de terminaciones de línea .

Sublime Text 3 tiene un complemento llamado RawLineEdit que mostrará los finales de línea y permitirá la inserción de un tipo de final de línea arbitrario

shift + ctrl + p y comenzar a escribir el nombre del complemento, y alternar para mostrar el final de línea.

danilo
fuente