Veja quebras de linha e retornos de carro no editor

180

Alguém conhece um editor de texto no Linux que me permita ver quebras de linha e retornos de carro? O Vim suporta esse recurso?

usertest
fonte
1
NOTA: às vezes, nova linha ($) e retorno de carro (^ M) ficam ocultos em MUITOS esquemas de cores e também ao usar o putty para ssh.
Vanessa Sanchez
1
OP Acho que você deve reconsiderar a resposta selecionada. como a resposta selecionada não funciona. mas a resposta CaptSaltyJack funciona bem.
JavaSheriff
OP O que mostrará AMBOS é a solução da @arno. Eu precisava ver AMBOS, porque eu tenho um arquivo aleatoriamente usando todos os três formatos de arquivo ... E a solução do arno funciona #
Wayne Walker

Respostas:

139

:set listno Vim mostrará espaço em branco. O fim das linhas é exibido como ' $' e os retornos de carro geralmente são exibidos como ' ^M'.

jay.lee
fonte
2
Mesma pergunta aqui: superuser.com/questions/97692/…
Alec Jacobson
254
Incorreto, :set listNÃO mostrará ^Mcaracteres (CRs). Fornecer a -bopção para vi / vim funcionará. Ou, uma vez que o vim é carregado, tipo::e ++ff=unix
CaptSaltyJack
15
Para sua informação, para desativar o modo "set list", use:set nolist
Tomofumi 23/10
@ Tomofumi uma edição com a sua posição será bem-vinda!
Pipo
1
Resposta errada. : set list NÃO exibirá ^ M caracteres (CRs). Use a opção -b para vi / vim funcionará.
Nanosoft 13/0318
265

Para discordar da resposta oficial:

:set listirá não mostrar ^ caracteres M (CRS). Fornecer a opção -b ao vi / vim funcionará. Ou, uma vez carregado o vim, digite :e ++ff=unix.

CaptSaltyJack
fonte
4
É a sintaxe. :help editmostra e[dit]! [++opt] [+cmd]. E :help ++ediz que o argumento [++ opt] pode ser usado para forçar o valor de 'fileformat' [..] .
Dennis
19
apenas para esclarecer, :set listmostra nova linha ( $), :e ++ff=unixmostra CR ( ^M); se você quiser ver os dois, :set listentão:e ++ff=unix
Yibo Yang
5
Para expandir o comentário de @ dennis, :set ff=unixdiz ao Vim para alterar as terminações de linha para o estilo unix (como parte da configuração do formato do arquivo), para que os caracteres ^ M não estejam mais lá (e não sejam exibidos). :e ++ff=unixdiz para forçar a definição do formato do arquivo como unixsem realmente alterar o conteúdo. Então o vim o lê como um arquivo Unix, vê os caracteres CR como extras e os exibe como ^ M.
sundar - Restabelece Monica
2
Nem ainda não funciona para mim no vimpor alguma razão ... quero dizer nem -bopção, nem :e ++ff=unixquando dentro :(
RAM237
3
tudo bem,: e ++ ff = unix funcionou. Agora, como faço para desligá-lo?
Croo
78

VI mostra novas linhas (caracteres LF, código x0A) mostrando o texto subsequente na próxima linha.

Use o -binterruptor para o modo binário. Por exemplo, vi -b filenameou vim -b filename --.

Ele mostrará caracteres CR ( x0D), que normalmente não são usados ​​em arquivos de estilo Unix, como os caracteres ^M.

Larry K
fonte
Normalmente não preciso ver o final da linha, porque trabalho principalmente em Unixambiente. Mas gostaria de ser avisado sobre as terminações de linha do tipo Windows, se houver alguma no arquivo. Irá vi -b filenameou :set binaryapenas mostrará ^Mse é um arquivo do tipo Windows e não há outras terminações de linha?
Alpha_989 25/05
31

Apenas para esclarecer por :set listque não mostrará CR's ^Msem e ++ff=unixe por :set listque não tem nada a ver com ^M's.

Internamente, quando o Vim um arquivo em seu buffer, ele substitui todos os caracteres de final de linha por sua própria representação (vamos chamá-lo $). Para determinar quais caracteres devem ser removidos, ele primeiro detecta em que formato as terminações de linha são armazenadas em um arquivo. Se houver apenas CRLF '\r\n'ou única CR '\r'ou única LF '\n'caracteres de fim de linha, então o 'fileformat'é configurado para dos, mace unixrespectivamente.

Quando a listopção está definida, o Vim exibe $caracteres quando a quebra de linha ocorreu, independentemente da fileformatopção detectada. Ele usa sua própria representação interna de quebras de linha e é isso que exibe.

Agora, quando você grava buffer no disco, o Vim insere caracteres de final de linha de acordo com as fileformatopções detectadas, convertendo essencialmente todos os internos $com caracteres apropriados. Se fileformataconteceu unix, ele simplesmente escreverá \nno lugar de sua quebra de linha interna.

O truque é forçar o Vim a ler um dosarquivo codificado como unixum. O efeito líquido é que ele remove todas \nas partes \rintactas e as exibe como ^Mestão no seu buffer. A configuração :set listtambém mostrará finais de linha internos como $. Afinal, você vê ^M$no lugar de dosquebras de linha codificadas.

Observe também que :set listnada tem a ver com mostrar ^M. Você pode verificá-lo (certifique-se de ter desabilitado a listopção primeiro) inserindo CR único usando CTRL-Vseguido de Enterno modo de inserção. Depois de gravar o buffer no disco e abri-lo novamente, você verá ^Mapesar da listopção estar definida como 0.

Você pode encontrar mais informações sobre os formatos de arquivo em http://vim.wikia.com/wiki/File_format ou digitando :help 'fileformat'no Vim.

Paweł Smolak
fonte
11

Tente o seguinte comando.

: definir binário

No VIM, isso deve fazer o mesmo que usar a opção de linha de comando "-b". Se você colocar isso no arquivo de inicialização (por exemplo, .vimrc), ele sempre estará disponível para você.

Em muitos sistemas * nix, existe um comando "dos2unix" ou "unix2dos" que pode processar o arquivo e corrigir qualquer problema suspeito de final de linha. Se não houver nenhum problema com as terminações de linha, os arquivos não serão alterados.

Brian S. Wilson
fonte
Infelizmente no meu sistema (Ubuntu 16.04) set binarynão é o mesmo que vim -b filename.py. Alguma idéia do porquê? Eu verifiquei helpe parece que o que você diz é geralmente correto. Como faço para descobrir por que isso acontece?
Alpha_989 25/05
:e ++ff=unixmostra o ^Mcorretamente e não mostrá-la quando eu uso unixarquivos do tipo .. Então eu acho que o problema está resolvido por agora ...
alpha_989
6

Sugiro que você edite seu arquivo .vimrc, para executar uma lista de comandos. Edite seu arquivo .vimrc, assim:

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

Quando você está executando o vim, os comandos em .vimrc são executados e você pode ver este exemplo:

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

usando cate -Avocê pode ver novas linhas como $, guias como^I
cat -A myfile

mirhossein
fonte
0

Você pode ver as linhas de quebra usando o editor gedit .

Primeiro, se você não tiver instalado:

sudo apt-get install gedit

Agora, instale os plugins do gedit :

sudo apt-get install gedit-plugins

e selecione o plug-in Draw Spaces , entre em Preferences e escolha Draw new lines

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Usando o VSCode, você pode instalar a extensão de terminações de linha .

O Sublime Text 3 possui um plug-in chamado RawLineEdit que exibirá finais de linha e permitirá a inserção de tipos arbitrários de final de linha

shift + ctrl + p e comece a digitar o nome do plug-in e alterne para mostrar o final da linha.

danilo
fonte