Atom文本编辑器在空行中添加"^M"

18

Atom文本编辑器会在每个空行上添加此符号。

您有任何想法是什么以及为什么要这样做吗?

输入图像描述

4个回答

19

我正在使用Ubuntu Linux,注意到在git diff期间出现了^M(回车符,换行符)。

不知何故,在状态栏底部选择了CRLF:

Atom状态栏中的CRLF

我只需单击它并更改为LF:

Atom状态栏中的LF

似乎是针对每个文件设置的,因此需要针对每个有问题的文件进行更改。


在我的情况下,所有行尾都已更改,因此git diff显示了一大片红色。 我使用以下方法来确定“实际”更改:

git diff --ignore-space-at-eol

然而,git commit 仍然会将“真正”的更改埋藏在提交历史中,因此我:

  1. 运行 git stash save
  2. 在 Atom 中更改了换行符
  3. 运行 git commit -am "fix line endings"
  4. 运行 git stash apply

现在换行符已经消失,可以对精确的 diff 进行提交。


哦,太棒了!你让我的一天变得美好。我不确定为什么它会改变为CRLF,但无论如何,非常感谢你。 - ngelx

4
你正在使用Windows下的Atom文本编辑器吗? 在Windows中,回车符是\r\n,而在Unix中是\n。 在Windows中,^M0xD\r)是回车符。 我认为,该文件之前是在Unix下保存(每行已经有了\n),因此Atom会按照Windows的要求添加\r
更多信息请参见这里这里

5
Atom会在状态栏右下角显示当前使用的行尾。请参考插件文档。在那里更改将修改该文件的行尾。您还可以在设置>包>行尾选择器中设置新文件的默认行尾。 - David Ulrich
从@DavidUlrich的评论中,我深入研究了这个包。通过上面的练习,我发现我正在处理的存储库中的文件都是CRLF格式的。我得出结论,由于该项目以前是由另一位开发人员完成的,很可能他使用的是Windows系统。 - Ivan Chong

3
检查您的编辑器底部,可能已更改文件行尾。通常情况下,Unix使用LF。

enter image description here

和 Windows 的 CRLF

enter image description here


1
大多数我在网上找到的解决方案都涉及使用sed、vi或emacs。我找到了一种可以直接在Atom(可能适用于任何文本编辑器)中使用的解决方案,不需要命令行。
选择所有回车符,或在每行开头获取一个选择器,然后删除并按回车键。可能需要一点时间,但它会消除所有^M字符。
这可能会破坏您的缩进,但您可以自动缩进。如果您需要对多个文件执行此操作,则可能不太有效率,但对于单个文件而言,这是一个快速而简单的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接