Atom / Github 删除文件末尾的换行符

3
使用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个回答

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。
当您使用whitespace包保存时,它会删除文件末尾多余的换行符,只留下一个。就像第一张截图中一样。但是,当您查看Github diff时,情况有所不同。 Github向您显示文件内容,而不是编辑器。因此,您的光标不需要幻象最后一行。相反,它向您展示了事实:第234行是文件的最后一行。第235行现在消失了。
让我们来看看空格包的设置。特别是第一个设置:

Ensure Single Trailing Newline

如果缓冲区在保存时没有以换行符字符结尾,则附加一个。如果以多个换行符结尾,则仅保留一个。要为某种语言禁用/启用,请在您的config.cson中使用语法范围属性。

以下是描述的前两句话,其中添加了一些强调:
如果缓冲区在保存时没有以换行符结尾,则添加一个。如果它以多个换行符结尾,则删除除一个之外的所有

谢谢。我本来以为 Github 会自动识别 };\n,但我已经取消了“确保单个尾随换行符”选项。 - user3871

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