Eu continuo recebendo ^Mcaracteres no meu vimrc e isso quebra minha configuração.
:digraphsno vim mostra a tabela do dígrafo à qual @LightnessRacesinOrbit vinculou.
preg_replace('/[\x01]/', ' ' ,$str); Espero que ajude.
Eu continuo recebendo ^Mcaracteres no meu vimrc e isso quebra minha configuração.
:digraphsno vim mostra a tabela do dígrafo à qual @LightnessRacesinOrbit vinculou.
preg_replace('/[\x01]/', ' ' ,$str); Espero que ajude.
Respostas:
O Unix usa 0xA para um caractere de nova linha. O Windows usa uma combinação de dois caracteres: 0xD 0xA. 0xD é o caractere de retorno de carro. ^Macontece que o vim exibe 0xD (0x0D = 13, M é a 13ª letra do alfabeto inglês).
Você pode remover todos os ^Mcaracteres executando o seguinte:
:%s/^M//g
Onde ^Mé inserido pressionando Ctrle digitando, vseguido de me soltando Ctrl. Às vezes, isso é abreviado como ^V^M, mas observe que você deve inseri-lo como descrito na frase anterior, em vez de digitá-lo literalmente.
Esta expressão substituirá todas as ocorrências de ^Mcom a sequência vazia (ou seja, nada). Eu uso isso para se livrar de ^Marquivos copiados do Windows para Unix (Solaris, Linux, OSX).
^Mcaractere se o arquivo tiver terminações de linhas incompatíveis. Use o comando fornecido pelo Tomasz e digite, :fileformat={unix|dos|mac}dependendo do sistema operacional que você está alvejando. Se houver apenas algumas linhas sem o ^Mpersonagem, você provavelmente desejará :fileformat=dos. Se você estiver editando arquivos em um editor que não seja o vim, verifique se ele está configurado para corresponder às terminações de linha (o Bloco de Notas não fará isso, mas qualquer editor respeitável como o Notepad ++ ou o TextMate fará).
vi, esse comando precisa ser digitado manualmente. Apenas colá-lo em um terminal aberto com a viexecução resultará em um erro "padrão não encontrado".
:%s/\r//gpara substituir os retornos de carro no meu arquivo. O padrão ^ V ^ M não pode ser encontrado no arquivo que eu tinha um monte de ^ personagens M no.
:%s/\r//g
trabalhou para mim hoje. Mas minha situação pode ter sido um pouco diferente.
:%s/\r//seria suficiente.
Para converter a nova linha em vez de removê-la:
:%s/\r/\r/g
\rtem um comportamento diferente na parte de pesquisa versus a parte de substituição. Consulte stackoverflow.com/a/3834303, por exemplo.
:%s/\r//g
Eu obtive um arquivo de texto originalmente gerado em uma máquina Windows por meio de um usuário Mac e precisava importá-lo para um banco de dados MySQL Linux usando o load datacomando
Embora o VIM exibisse o caractere '^ M', nenhuma das opções acima funcionava para o meu problema específico, os dados eram importados, mas sempre estavam corrompidos. A solução foi bastante fácil no final (depois de muita frustração).
Solução: A execução de dos2unix DUAS VEZES no mesmo arquivo fez o truque! O uso do filecomando mostra o que está acontecendo ao longo do caminho.
$ file 'file.txt'
file.txt: ASCII text, with CRLF, CR line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text, with CRLF line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text
E a versão final do arquivo foi importada perfeitamente para o banco de dados.
No Unix, é provavelmente mais fácil usar o comando 'tr'.
cat file1.txt | tr "\r" "\n" > file2.txt
Eu os removi com o sed:
sed -i -e 's/\r//g' <filename>
Também pode substituir por uma sequência ou caractere diferente:
sed -i -e 's/\r/string/g' <filename>
Esses sedcomandos funcionam na versão GNU / Linux, sedmas podem precisar de ajustes nos BSDs (incluindo o macOS).
Você pode corrigir isso no vim usando
:1,$s/^V^M//g
onde ^ é o caractere de controle.
^Mé.
Esta é a única coisa que funcionou no meu caso:
:e ++ff=dos
:wq
Se ele interromper sua configuração e os caracteres ^ M forem necessários nos mapeamentos, você poderá simplesmente substituir os caracteres ^ M por <Enter>ou mesmo <C-m>(ambos digitados como sequências simples de caracteres, com 7 e 5 caracteres, respectivamente).
Esta é a maneira única e portátil recomendada de armazenar códigos de chave especiais em mapeamentos
No FreeBSD, você pode limpar o ^Mmanual digitando o seguinte:
:%s/ Ctrl+ V, depois Ctrl+ M, depois Ctrl+ Mnovamente.
Se você não especificou um fileformatintencionalmente diferente (por exemplo, :e ++ff=unixpara um arquivo do Windows), é provável que o arquivo de destino tenha EOLs mistos.
Por exemplo, se um arquivo tiver algumas linhas com <CR><NL>finais e outros com
<NL>finais, e fileformatfor definido unixautomaticamente pelo Vim ao lê-lo, ^M (<CR>)aparecerá. Nesses casos, fileformatsentra em jogo. Veja :help ffspara os detalhes.