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?
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.
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.
Hello%$
com arquivos DOS (onde%
está um CR e$
umLF
)? Isso não é possível com olist
/listchars
configuração, e eu realmente não posso chegar a uma maneira de fazer isso em VimScript quer ...set list
haver uma maneira de terCR
eLF
mostrar como caracteres específicos, talvez?set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Respostas:
Com algumas ressalvas, você pode fazer isso usando o modo binário do Vim. Parece que você pode querer usar o comando
Como alternativa, você pode colocar o seguinte em seu
.vimrc
: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:
'textwidth'
para 0'wrapmargin'
para 0'modeline'
'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'
fonte
but it does quite a few other things as well
isso ocorre porque o binário é umFileType
com alguns comandos automáticos ou é algum tipo de coisa inevitável e incorporada?FileType
chamadasbinary
com esses comandos automáticos ou apenas algumas coisas embutidas?:help 'binary'
. E talvez:help 'fileformat'
.Se você adicionar ao seu
~/.vimrc
:Isso sempre mostrará
CR
como^M
eLF
como$
.Por padrão, o vim interpretaria um arquivo que possui apenas
CRLF
finais como um arquivo DOS e mostrariaCRLF
como$
. Ao definirffs=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 aLF
. Você precisaria inserir um manualmenteCR
digitandoCTRL+V, CTRL+M
.fonte