保存时,Vim总是在文件的末尾添加新行,这会导致我的PHP脚本出错。

评论

“它在我的PHP脚本中引起错误”->这很奇怪吗? PHP应该与结尾的换行符一起正常工作。实际上,这几乎是标准的。也许您在PHP输出到浏览器的?>之后有一个空行(导致“标头已发送”错误)?您不需要结尾的?>,通常建议将其省略以防止出现此问题。

我猜那是误导。我们的脚本会将任何输出解释为错误。

另外,相关问题:如何使vim自动在文件末尾添加换行符?

否。Vim没有添加新行。

#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