Removendo ^M do VI

Publicado por César Frias em 20/02/2010

[ Hits: 31.738 ]

 


Removendo ^M do VI



Utilizando o editor de textos vi é comum acharmos no final das linhas de alguns arquivos os caracteres ^M, isso acontece pois no DOS/Windows o <enter> é representado por 2 caracteres (retorno de cursor e quebra de linha) enquanto no Linux ele é representado apenas pela quebra de linha.

Pois bem, se nós usarmos o comando "<Esc>+/^M" (sem as aspas) o vi irá procurar por linhas que comecem com a letra M, pois isso é uma expressão regular e o caractere "^" representa início de linha.

A forma correta a se usar seria a seguinte "<Esc>+/<Ctrl>V<Ctrl>M", assim iremos achar todos os ^M que desejamos no final das linhas.

Porém o nosso objetivo aqui não é simplesmente achar os ^M e sim retirá-los e de quebra adicionarmos um mapeamento no arquivo .vimrc, portanto iremos usar o seguinte comando "<Esc>:%s/\r//g", assim iremos substituir todas as ocorrências do ^M até o final do arquivo.

Apenas substituí <Ctrl>V<Ctrl>M pelo \r, pois eles representam a mesma coisa.

Adicionando agora o mapeamento ao .vimrc:

Basta abrir o arquivo .vimrc (se ele não existir, crie-o) para edição e adicionar ao final dele essas 2 linhas:

" TiraM: Mapeamento para tirar os ^M do final das linhas
map ,tm :%s/\r//g

A primeira linha é apenas um comentário representado pelo " no início dela, já a segunda é a que realmente nos interessa, é ela que faz a "mágica".

Sempre que nos depararmos agora com algum arquivo cheio de ^M no final das linhas, basta pressionarmos "<Esc>,tm", assim chamaremos o mapeamento ",tm" que acabamos de criar e nos livraremos dos malditos ^M.

Um abraço a todos,

César Frias.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Lançamento do Metamorphose Linux 3.0 Lion

Resolvendo (ou contornando) os problemas do GoogleEarth em Linux

Usando dicionários temáticos no BrOffice.org

Corrigindo erro do VirtualBox no Ubuntu 8.04

O que fazer após instalar o Fedora 33 KDE Spin

  

Comentários
[1] Comentário enviado por Tulio Hoffimann em 20/02/2010 - 17:38h

.

[2] Comentário enviado por enzo em 21/02/2010 - 21:58h

Cesar


O VI também tem um outra opção:

<ESC> :set fileformat=unix

isto muda o arquivo para o formato unix,

Caso você queira um arquivo com o formato DOS basta executar:

<ESC> :set fileformat=dos

Espero ter contribuído.


Enzo

[3] Comentário enviado por joaomarcoslemos em 30/08/2011 - 12:13h

consegui arrumar o arquivo da seguinte forma:

:1,$ s/^M/\r/g

onde ^M digitei ctrl+v ctrl+m

[]s

Joao

[4] Comentário enviado por btc_cesar em 30/08/2011 - 22:18h

Boa noite João,

o seu comando também funciona, pois ctrl+v ctrl+m representa o ^M que queremos e no ínicio dele você diz que
quer substituir desde a linha 1 até o final do arquivo ( o que pode ser substituído por %) :D

Porém aqui na dica eu adicionei um mapeamento no .vimrc, para que ao digitar ,tm ele retire automaticamente os ^M.

Espero que a dica tenha sido útil :)

Abraços
César Frias

[5] Comentário enviado por zcasmarcos em 11/03/2016 - 12:06h

Ola!
Espero conseguir resposta!
Tudo joias?
A retirada do ˆM foi feita com êxito. Mas agora entra mais um detalhe.
Como acrescento em cada ˆM encontrado uma quebra de linha utilizando o vi ?

Muito Obrigado

Marcos



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts