^ M geralmente aparece quando o arquivo é inconsistente com relação aos terminadores de linha usados. Tente o seguinte:
- Crie
testfile
usando vim com algumas linhas aleatórias e escreva no modo dos. -
Em seguida, execute (espere que você tenha o cygwin instalado):
sed '2s/.$//' testfile > corruptfile
Isso removerá o último caractere da segunda linha, criando uma inconsistência nos terminadores de linha usados.
- Abra
corruptfile
com vim. ^ M símbolos aparecerão para que você esteja ciente da inconsistência.
Na vida real, programas que foram escritos com um único tipo de terminador de linha em mente podem produzir tais inconsistências. Embora essas inconsistências pareçam inocentes, elas podem causar problemas em outros programas. Por exemplo. O subversion não permite que arquivos com terminadores de linha inconsistentes sejam adicionados a um repositório. Outros programas podem falhar silenciosamente.
Para fazer com que o M desaparece, basta fazer uma substituição global:
:% s/^M//g
O ^M
é produzido pressionando: Ctrl+v <Enter>
Em seguida, escreva o arquivo no formato desejado:
:set ff=dos
:w