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 listno Vim mostrará espaço em branco. O fim das linhas é exibido como ' $' e os retornos de carro geralmente são exibidos como ' ^M'.
: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
:set nolist
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.
:help editmostra e[dit]! [++opt] [+cmd]. E :help ++ediz que o argumento [++ opt] pode ser usado para forçar o valor de 'fileformat' [..] .
:set listmostra nova linha ( $), :e ++ff=unixmostra CR ( ^M); se você quiser ver os dois, :set listentão:e ++ff=unix
: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.
vimpor alguma razão ... quero dizer nem -bopção, nem :e ++ff=unixquando dentro :(
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.
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?
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 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, 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.
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 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?
: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 ...
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 cate -Avocê 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.