Quando abro o arquivo vim
, vejo ^M
caracteres estranhos .
Infelizmente, o mecanismo de pesquisa favorito do mundo não se dá bem com caracteres especiais nas consultas, então estou perguntando aqui:
Qual é esse
^M
personagem?Como poderia ter chegado lá?
Como faço para me livrar dele?
vim
special-characters
Christoph Wurm
fonte
fonte
help digraph-table
.Respostas:
O
^M
é um caractere de retorno de carro. Se você perceber isso, provavelmente está vendo um arquivo que se originou no mundo DOS / Windows, em que um final de linha é marcado por um par de retorno de carro / nova linha, enquanto no mundo Unix, final de linha é marcado por uma única nova linha.Leia este artigo para obter mais detalhes e também a entrada da Wikipedia para nova linha .
Este artigo descreve como configurar o vim para editar arquivos de forma transparente com diferentes marcadores de fim de linha.
Se você possui um arquivo
^M
no final de algumas linhas e deseja se livrar deles, use isto no Vim:(Pressione Ctrl+ V Ctrl+ Mpara inserir isso
^M
.)fonte
:%s/^M/\r/g
remover^M
e substituir^M
por caracteres de nova linha\r
. Sem%
, o comando se aplica somente à linha atual. E me deparei com alguns exemplos em que^M
não está no fim da linha, tais comoThe first line.^MThe second line.
:%s/^M/
^M
é usado em UNIX\n
é usado no Unix, o que está correto. Esse é o código ASCII10
, também conhecido como^J
.A maioria dos sistemas operacionais UNIX possui um utilitário chamado
dos2unix
que converterá o CRLF em LF. As outras respostas abrangem a pergunta "o que são".fonte
Uma maneira mais simples de fazer isso é usar o seguinte comando:
Este comando também funciona com padrões de caminho, por exemplo,
Se não funcionar, tente usar o modo diferente:
-c
Defina o modo de conversão. Onde CONVMODE é um dos:ascii, 7bit, iso, mac
comascii
sendo o padrão.fonte
Isso funcionou para mim
O comando: e ++ ff = dos informa ao Vim para ler o arquivo novamente, forçando o formato do arquivo dos. O Vim removerá as terminações de linha somente CRLF e LF, deixando apenas o texto de cada linha no buffer.
então
e finalmente
fonte
ff
se refere ao formato de arquivo? Que tal++ff
?Outra maneira de se livrar dos retornos de carro é com o
tr
comandoEu tenho um pequeno script que se parece com isso
fonte
Você pode limpar isso com
sed
:O truque é como inserir o retorno de carro corretamente. Geralmente, você precisa digitar
C-v C-m
para inserir um retorno de carro literal. Você também pode ter um trabalho sed comfonte
O que é isso ^ M?
O ^ M é um caractere de retorno de carro. Se você perceber isso, provavelmente está vendo um arquivo que se originou no mundo DOS / Windows, em que um final de linha é marcado por um par de retorno de carro / nova linha, enquanto no mundo Unix, final de linha é marcado por uma única nova linha.
Como poderia ter chegado lá?
Quando houver alteração no formato do arquivo.
Como faço para me livrar dele?
abra seu arquivo com
salve-o com o seguinte comando
fonte
No meu caso,
Nada acima funcionou, eu tinha um arquivo CSV copiado para a máquina Linux do meu mac e usei todos os comandos acima, mas nada ajudou, exceto o abaixo
Eu tinha um arquivo no qual ^ M caracteres eram entrelaçados entre linhas, algo como abaixo
fonte
Você pode usar o Vim no modo Ex:
-b
modo binário%
selecione todas as linhass
substituto\r
retorno de carrox
salvar e fecharfonte
Adicione a seguinte linha ao seu ~ / .vimrc
Então, quando você tiver um arquivo com as terminações de linha do Windows, execute o comando ": Tounix".
fonte
No passado, eu vi que mesmo os arquivos de configuração não são analisados corretamente e reclamam de espaço em branco, mas se você vi e faz uma lista definida, ele não mostrará o espaço em branco, o nome do arquivo grep [[space]] mostrará ^ M
é
dos2unix file
aí que ajudafonte