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?
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?
Respostas:
:set list
no Vim mostrará espaço em branco. O fim das linhas é exibido como ' $
' e os retornos de carro geralmente são exibidos como ' ^M
'.
:set list
NÃO mostrará ^M
caracteres (CRs). Fornecer a -b
opção para vi / vim funcionará. Ou, uma vez que o vim é carregado, tipo::e ++ff=unix
:set nolist
Para discordar da resposta oficial:
:set list
irá 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
.
:help edit
mostra e[dit]! [++opt] [+cmd]
. E :help ++e
diz que o argumento [++ opt] pode ser usado para forçar o valor de 'fileformat' [..] .
:set list
mostra nova linha ( $
), :e ++ff=unix
mostra CR ( ^M
); se você quiser ver os dois, :set list
então:e ++ff=unix
:set ff=unix
diz 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=unix
diz para forçar a definição do formato do arquivo como unix
sem 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.
vim
por alguma razão ... quero dizer nem -b
opção, nem :e ++ff=unix
quando dentro :(
VI mostra novas linhas (caracteres LF, código x0A
) mostrando o texto subsequente na próxima linha.
Use o -b
interruptor para o modo binário. Por exemplo, vi -b filename
ou vim -b filename --
.
Ele mostrará caracteres CR ( x0D
), que normalmente não são usados em arquivos de estilo Unix, como os caracteres ^M
.
Unix
ambiente. Mas gostaria de ser avisado sobre as terminações de linha do tipo Windows, se houver alguma no arquivo. Irá vi -b filename
ou :set binary
apenas mostrará ^M
se é um arquivo do tipo Windows e não há outras terminações de linha?
Apenas para esclarecer por :set list
que não mostrará CR's ^M
sem e ++ff=unix
e por :set list
que não tem nada a ver com ^M
's.
Internamente, quando o Vim lê 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
, mac
e unix
respectivamente.
Quando a list
opção está definida, o Vim exibe $
caracteres quando a quebra de linha ocorreu, independentemente da fileformat
opçã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 fileformat
opções detectadas, convertendo essencialmente todos os internos $
com caracteres apropriados. Se fileformat
aconteceu unix
, ele simplesmente escreverá \n
no lugar de sua quebra de linha interna.
O truque é forçar o Vim a ler um dos
arquivo codificado como unix
um. O efeito líquido é que ele remove todas \n
as partes \r
intactas e as exibe como ^M
estão no seu buffer. A configuração :set list
também mostrará finais de linha internos como $
. Afinal, você vê ^M$
no lugar de dos
quebras de linha codificadas.
Observe também que :set list
nada tem a ver com mostrar ^M
. Você pode verificá-lo (certifique-se de ter desabilitado a list
opção primeiro) inserindo CR único usando CTRL-V
seguido de Enter
no modo de inserção. Depois de gravar o buffer no disco e abri-lo novamente, você verá ^M
apesar da list
opçã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.
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.
set binary
não é o mesmo que vim -b filename.py
. Alguma idéia do porquê? Eu verifiquei help
e parece que o que você diz é geralmente correto. Como faço para descobrir por que isso acontece?
:e ++ff=unix
mostra o ^M
corretamente e não mostrá-la quando eu uso unix
arquivos do tipo .. Então eu acho que o problema está resolvido por agora ...
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¶
usando cat
e -A
você pode ver novas linhas como $
, guias como^I
cat -A myfile
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
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.