Removendo ^M do VI

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

[ Hits: 32.317 ]

 


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

Aumentando a produtividade com zsh

Como habilitar acesso root via SSH

Jogando no Linux usando seus CDs do Windows

Instalando codecs para assistir filmes e ouvir músicas

VMWare lento com OpenSUSE host

  

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