Exiba CR e LF em vez de “EOL” em ': set list'


12

Em vez de escolher um caractere a ser exibido como o caractere EOL, gostaria que um fosse exibido para CR e LF separadamente e independentemente de o arquivo ser unix ou DOS. Isso é possível?


2
Então, se eu entendi direito, você quer algo parecido Hello%$com arquivos DOS (onde %está um CR e $um LF)? Isso não é possível com o list/ listcharsconfiguração, e eu realmente não posso chegar a uma maneira de fazer isso em VimScript quer ...
Martin Tournoij

1
@Carpetsmoker Isso está correto. Além de set listhaver uma maneira de ter CRe LFmostrar como caracteres específicos, talvez?
Capitão Man

2
Você pode destacá-los de uma determinada cor, mas não há como mostrá-los como caracteres específicos que não são do tipo hacky.
EvergreenTree

Eu acho que CR ou LF podem ser vistos de cada vez, não os dois.
SibiCoder

1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Respostas:


2

Com algumas ressalvas, você pode fazer isso usando o modo binário do Vim. Parece que você pode querer usar o comando

vim -b +'set list' somefile

Como alternativa, você pode colocar o seguinte em seu .vimrc:

:set binary
:set list

O importante é que o modo binário deve ser definido antes que o arquivo em questão seja lido em um buffer. Depois que o Vim lê o arquivo, é tarde demais; esse truque consiste em alterar a maneira como o Vim lê o arquivo. Especificamente, o que você precisa é que o Vim não tente adivinhar o tipo específico de arquivo <EOL>.

O modo binário faz o que você deseja, desativando essa detecção automática do separador de linhas, mas também faz algumas outras coisas:

  • define 'textwidth'para 0
  • define 'wrapmargin'para 0
  • desarmar 'modeline'
  • desarmar 'expandtab'

Então você pode não querer ter isso no seu .vimrc; pode ser melhor usar a versão da linha de comando e apenas para os arquivos em que você precisa desse tipo especial de exibição.

Para maiores informações:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'

but it does quite a few other things as wellisso ocorre porque o binário é um FileTypecom alguns comandos automáticos ou é algum tipo de coisa inevitável e incorporada?
Captain Man

Com essa frase, pretendia apresentar a lista que a segue imediatamente.
Ptolemarch 14/09/16

Certo, eu apenas não citei a coisa toda :) O que eu quis dizer é que faz essas coisas porque usa algumas FileTypechamadas binarycom esses comandos automáticos ou apenas algumas coisas embutidas?
Captain Man

1
Ah, certo. Nada disso tem nada a ver com tipos de arquivo (mas é bastante utilizado nos formatos de arquivo). isso faz parte do próprio modo binário. Veja :help 'binary'. E talvez :help 'fileformat'.
Ptolemarch 14/09/16

0

Se você adicionar ao seu ~/.vimrc:

set ffs=unix
set list

Isso sempre mostrará CRcomo ^Me LFcomo $.

Por padrão, o vim interpretaria um arquivo que possui apenas CRLFfinais como um arquivo DOS e mostraria CRLFcomo $. Ao definir ffs=unix, você força o vim a abrir sempre como um arquivo unix e, portanto, o CR é tratado como um caractere extra.

Nota: Tenha cuidado ao modificar e salvar arquivos DOS. Se você pressionar ENTER, ele inserirá apenas a LF. Você precisaria inserir um manualmente CRdigitando CTRL+V, CTRL+M.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.