Atom / Github删除文件结尾换行符

时间:2017-03-27 16:56:36

标签: github newline atom-editor

使用Atom 1.14.3,我有whitespace个包,用于处理文件末尾的自动插入换行符。

即使我删除结束换行符并点击保存,它也会重新添加换行符。这很好。

enter image description here

空白包配置似乎没问题:

enter image description here

问题是,当我向Github提交时,它说新换行已被删除:

enter image description here

这是为什么?它是Atom问题,还是潜在的本地github设置问题?

编辑:不知何故,我需要禁用whitespace包,在文件末尾手动添加两个CRLF,然后提交Github在文件末尾选取单个CRLF。

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为你可能误解了换行符的位置。

让我们看一下你的两个截图,以及每个截图中的换行符。

screenshot 1

233    return router;\n
234  };\n

这里我们有234作为文件的最后一行。我们显示了一行235,但这是因为234上的换行创建了编辑器光标所在的下一行。如果您开始在235上输入,那么您将创建更多内容。但是现在,235是一个空行(包括没有终止换行符)。

screenshot 2

233    return router;\n
234  };\n
235  \n

这是类似的,除了它还有一个以换行符结尾的空行235。现在,无换行空输入行已移至236。

当您使用空白包保存时,它会删除文件末尾的无关换行符,只留下一行。如在第一个截图中。但是,当你看到Github差异时,情况就会有所不同。 Github向您展示文件内容,而不是在编辑器中。因此,没有理由让幻像最后一行为您的光标。相反,它向您展示了事情的简单事实:第234行是文件中的最后一行。 235行现已消失。

让我们来看看空白包的设置。特别是第一个设置:

  

确保单尾新线

     

如果缓冲区在保存时没有以换行符结尾,则追加一个。如果它以多个换行结束,则删除除一个之外的所有换行符。要禁用/启用某种语言,请在config.cson中使用语法范围的属性。

以下是描述中的前两句话,并加上了一些重点:

  

如果缓冲区在保存时没有以换行符结尾,则附加一个。如果它以多个换行符结尾,则删除除一个以外的所有内容。