#1 楼
这不是一个完整的空行,而是最后一行的最后一个换行符。 Unix工具(如Vim的传统)坚持要添加此功能,而Windows操作系统并不那么严格。关于更多信息,请参见为什么文件应该以换行符结尾?不幸的是,阻止Vim编写最终的换行符非常复杂。我的PreserveNoEOL插件可以做到这一点。有关方法的讨论,另请参见VIM在文件末尾禁用自动换行。
评论
只是向未来的读者指出,虽然这个答案当时真是太好了,但在最新版本的Vim中,稍后发布的答案中有一个更为简单的解决方案。
–丰富
19年10月7日在9:01
#2 楼
在新版本的Vim中,终于有了此选项的一个选项Vim 7.4.785添加了'fixeol'选项,可以禁用该选项以自动在文件末尾保留所有丢失的EOL。
(请参见Wiki页面:http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF)
在您的
~/.vimrc
中添加以下行:set nofixeol
重新启动
vim
,现在它不应该在文件末尾添加换行符。 )#3 楼
您是否尝试过以二进制模式打开文件?尝试vim -b file_name
。它不应在文件末尾添加新行。 评论
我尝试这样做,然后使用xxd进行验证,但是即使在二进制模式下,它仍然会添加换行符(0a)。
–詹姆斯
16-10-5在22:54
评论
“它在我的PHP脚本中引起错误”->这很奇怪吗? PHP应该与结尾的换行符一起正常工作。实际上,这几乎是标准的。也许您在PHP输出到浏览器的?>之后有一个空行(导致“标头已发送”错误)?您不需要结尾的?>,通常建议将其省略以防止出现此问题。我猜那是误导。我们的脚本会将任何输出解释为错误。
另外,相关问题:如何使vim自动在文件末尾添加换行符?
否。Vim没有添加新行。