Mostrar CR y LF en lugar de "EOL" en ': set list'

12

En lugar de elegir un carácter para que se muestre como el carácter EOL, me gustaría que se muestre uno para CR y LF por separado e independientemente de si el archivo es unix o dos. es posible?

Capitán Hombre
fuente
2
Entonces, si te entiendo correctamente, ¿quieres algo como Hello%$para los archivos de DOS (donde %es un CR y $es un LF)? Esto no es posible con la configuración list/ listchars, y tampoco puedo encontrar una manera de hacer esto en VimScript ...
Martin Tournoij
1
@Carpetsmoker Eso es correcto. Además de set list¿hay una manera de tener CRy LFmostrar como personajes específicos tal vez?
Capitán Man
2
Es posible que pueda resaltarlos con un color determinado, pero no hay forma de mostrarlos como personajes específicos que no sean hacky afaik.
EvergreenTree
Creo que CR o LF se pueden ver a la vez, no ambos.
SibiCoder
1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Respuestas:

2

Con algunas advertencias, puede hacer esto usando el modo binario de Vim. Parece que quizás quieras usar el comando

vim -b +'set list' somefile

Alternativamente, puede poner lo siguiente en su .vimrc:

:set binary
:set list

Lo importante es que el modo binario debe configurarse antes de que el archivo en cuestión se lea en un búfer. Una vez que Vim ha leído el archivo, es demasiado tarde; este truco se basa en cambiar la forma en que Vim lee el archivo. Específicamente, lo que necesita es que Vim no intente adivinar el tipo particular de archivo <EOL>.

El modo binario hace lo que desea, deshabilitando esta detección automática de separador de línea, pero también hace algunas otras cosas:

  • se establece 'textwidth'en 0
  • se establece 'wrapmargin'en 0
  • desarma 'modeline'
  • desarma 'expandtab'

Por lo tanto, es posible que no desee tener esto en su .vimrc; podría ser mejor usar la versión de línea de comandos, y solo para aquellos archivos donde necesita este tipo especial de visualización.

Para más información:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'
Ptolemarch
fuente
but it does quite a few other things as well¿Es esto porque el binario es un FileTypecon algunos comandos automáticos o es una especie de cosa inevitable inevitable?
Capitán Man
Con esa frase, quise presentar la lista que sigue inmediatamente.
Ptolemarch
Bien, simplemente no cité todo :) Lo que quise decir es ¿hace esas cosas porque usa algunas FileTypellamadas binarycon esos comandos automáticos o era solo algo incorporado?
Capitán Man
1
Ah bien. Nada de esto tiene nada que ver con los tipos de archivo (pero está bastante atrapado en los formatos de archivo). Esto es parte del modo binario en sí. Ver :help 'binary'. Y tal vez :help 'fileformat'.
Ptolemarch
0

Si agrega a su ~/.vimrc:

set ffs=unix
set list

Eso siempre se mostrará CRcomo ^My LFcomo $.

De manera predeterminada, vim interpretaría un archivo que solo tiene CRLFterminaciones como un archivo DOS y se mostrará CRLFcomo $. Al configurar ffs=unix, fuerza a vim a abrirse siempre como un archivo Unix y, por lo tanto, el CR se trata como un carácter adicional.

Nota: Tenga cuidado si modifica y guarda archivos DOS. Si presiona ENTER, solo insertará a LF. Tendría que insertar manualmente un CRescribiendo CTRL+V, CTRL+M.

wisbucky
fuente