我经常使用 Wordpress,有时我会临时更改 Wordpress 核心文件,以便了解正在发生的情况,尤其是在调试时。今天我有一个小小的惊喜。当我准备将更改提交到 git 存储库时,我注意到git status
正在将 WordPress 文件之一标记为未暂存提交。我记得在关闭该文件之前我已经恢复了对该文件所做的所有更改,所以我决定使用diff
看看发生了什么变化。我将项目中的文件与保存在下载目录中的 Wordpress 副本中的文件进行了比较。事实证明,这些文件的最后部分有所不同。diff
表明原始文件末尾缺少换行符:
1724c1724
< }
\ No newline at end of file
---
> }
我什至从来没有碰过那条线。我在大文件中间的某个位置所做的更改。这让我认为 vim 在文件末尾添加了换行符。为什么会发生这种情况?
我在这里看到的所有答案都解决了这个问题“如何阻止 Vim 在文件末尾添加换行符?”,而问题是“为什么 Vim 会在文件末尾添加新行?“。我的浏览器搜索引擎将我带到了这里,但我没有找到该问题的答案。
它与 POSIX 标准如何定义线条有关(参见为什么文件应该以换行符结尾? https://stackoverflow.com/questions/729692/why-should-files-end-with-a-newline)。所以,基本上,一行是:
- 3.206 Line
- A sequence of zero or more non- <newline> characters plus a terminating <newline> character.
因此,它们都需要以换行符结尾。这就是为什么 Vim 总是默认添加换行符(因为根据 POSIX,它应该始终存在)。
它并不是唯一这样做的编辑器。Gedit https://wiki.gnome.org/Apps/Gedit,默认文本编辑器GNOME https://www.gnome.org/,做同样的事情。
Edit
许多其他工具也需要换行符。参见示例:
- How wc期待它。 https://stackoverflow.com/a/7741505/3577054
-
海湾合作委员会对此发出警告 https://stackoverflow.com/a/729725/3577054.
此外,您可能对:Vim 在文件末尾显示换行符 https://stackoverflow.com/questions/15639511/vim-show-newline-at-the-end-of-file.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)