【问题标题】:Atom text editor adds "^M" to empty linesAtom 文本编辑器将“^M”添加到空行
【发布时间】:2016-05-01 07:57:43
【问题描述】:

Atom 文本编辑器将此符号添加到每个空行。

知道什么和为什么吗?

【问题讨论】:

    标签: git atom-editor


    【解决方案1】:

    您是否在 Windows 下使用 Atom 文本编辑器?
    Windows 回车是 \r\n 而在 Unix 中是 \n
    ^M0xD\r)是 Windows 中的回车符。
    我认为,该文件以前保存在 Unix 下(并且每行已经有 \n),所以 Atom 正在按照 Windows 的要求添加 \r

    更多信息可以查看thisthis

    【讨论】:

    • Atom 将在状态栏的右下角显示它正在使用的行尾。请参阅插件documentation。在那里更改它会修改该文件的行尾。在Settings > Packages > line-ending-selector 中,您也可以为新文件设置默认行结尾。
    • 从@DavidUlrich 的评论中,我深入了解了这个包。从上面的练习中,我发现我正在处理的 repo 中的文件都是 CRLF。我得出的结论是,由于该项目以前是由另一个开发人员完成的,很可能,祝福他,他正在使用 Windows。
    【解决方案2】:

    我在网上找到的大多数解决方案都涉及使用 sed、vi 或 emacs。我找到了一个直接在 Atom(可能还​​有任何文本编辑器)中工作的解决方案,不需要命令行。

    选择所有的返回,或者在每一行的开头获取一个选择器,然后删除并点击返回。这可能需要一秒钟,但它会删除所有 ^M 字符。

    这可能会破坏您的缩进,但您可以自动缩进。如果您需要处理多个文件,这可能效率不高,但对于一个文件来说,这是一种快速而肮脏的解决方案。

    【讨论】:

      【解决方案3】:

      我在 Ubuntu Linux 上,注意到 git diff 期间的 ^M(回车,换行)。

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

      我只是简单地点击它并更改为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

      现在行尾消失了,可以在精确的差异上进行提交。

      【讨论】:

      • 天啊!你做了五月天。我/不确定为什么它会更改为 CRLF,但无论如何。谢谢你。
      【解决方案4】:

      检查你的编辑器底部,它可能改变了你的文件行结尾。

      Unix 下通常是 LF

      和用于 Windows 的 CRLF

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        • 2022-06-15
        • 2023-02-22
        • 1970-01-01
        相关资源
        最近更新 更多