为什么Vim会在文件末尾添加新行?

Possible Duplicate:
07000

我和wordpress很多工作,有时候我暂时改变了wordpress的核心文件,以便了解发生了什么,尤其是在调试时。今天我有一点惊喜当我准备好将我的更改提交到我的git存储库时,我注意到,git状态正在将wordpress文件中的一个标记为不分段提交。我记得在关闭之前已经将所做的所有修改还原到该文件,所以我决定使用diff来查看发生了什么变化。我将我的项目文件与我在我的下载目录中保存的wordpress副本上的文件进行了比较。最终文件不一样。 diff表示原始文件末尾缺少一个换行符:

1724c1724
< }
\ No newline at end of file
---
> }

我从来没有触摸过这条线。我在一个文件间的某处改变了。这导致我认为vim在文件末尾添加一个换行符。为什么会发生这种情况?

在这里看到的所有答案都解决了“如何防止Vim在文件末尾添加换行符”,而问题是“为什么Vim会在文件末尾添加新行? ”。我的浏览器的搜索引擎把我带到这里,我没有找到这个问题的答案。

它与POSIX标准如何定义一条线有关(见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,它应该永远在那里)。

这不是唯一的编辑。 GeditGNOME中的认文本编辑器也是一样的。

编辑

许多其他工具也期望换行符。参见例如:

> How wc expects it.
> GCC warns about it

而且,您可能会感兴趣:Vim show newline at the end of file

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...