What is `^M` and how do I get rid of it?
The ^M
is a carriage-return character. If you see this, you're probably looking at a file that originated in the DOS/Windows world, where an end-of-line is marked by a carriage return/newline pair, whereas in the Unix world, end-of-line is marked by a single newline.
Read this article for more detail, and also the Wikipedia entry for newline.
This article discusses how to set up vim to transparently edit files with different end-of-line markers.
If you have a file with ^M
at the end of some lines and you want to get rid of them, use this in Vim:
:s/^M$//
(Press Ctrl+V Ctrl+M to insert that ^M
.)
A simpler way to do this is to use the following command:
dos2unix filename
This command works with path patterns as well, Eg
dos2unix path/name*
If it doesn't work, try using different mode:
dos2unix -c mac filename
-c
Set conversion mode. Where CONVMODE is one of:ascii, 7bit, iso, mac
withascii
being the default.
This worked for me
:e ++ff=dos
The :e ++ff=dos command tells Vim to read the file again, forcing dos file format. Vim will remove CRLF and LF-only line endings, leaving only the text of each line in the buffer.
then
:set ff=unix
and finally
:wq