Atom text editor adds this symbol to every empty line.
Any idea what and why?
I'm on Ubuntu Linux and noticed the ^M (Carriage Return, Line Feed) during git diff
.
Somehow CRLF was selected at the bottom of the status bar:
I simply clicked it and changed to LF:
It seems to be set on a file-by-file basis so will need to be changed for each problem file.
In my case somehow all the line endings had been changed so git diff
was a sea of red. I used the following to identify 'real' changes:
git diff --ignore-space-at-eol
However, git commit
would still bury the 'real' changes in commit history so I:
git stash save
git commit -am "fix line endings"
git stash apply
Now the line endings are gone and commits can be made on a precise diff.
Are you using Atom text editor under Windows?
Windows carriage return is \r\n
while it is \n
in Unix.
^M
( 0xD
or \r
) is the carriage return character in Windows.
I think, that file was previously saved under Unix ( and already have \n
on each line), so Atom is adding \r
as required by Windows.
Check your bottom of the editor which might have changed your file line endings.
Usually it is LF for Unix
and CRLF for windows
Most of the solutions I've found online involve using sed, vi, or emacs. I found a solution that works directly within Atom (and probably any text editor), no command line needed.
Select all of the returns, or get a selector at the beginning of every line then delete and hit return. It might take a second, but it will get rid of all of the ^M characters.
This will likely screw up your indenting, but you can auto-indent. This might not be efficient if you have multiple files you need to do this with, but it's a quick and dirty solution for just one file.