不要在文件末尾添加新行


11

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

如何使Vim在保存时不添加此新行?


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

我想那是误导。我们的脚本将任何输出解释为错误。
2015年


1
否。Vim没有添加新行。
romainl

Answers:


11

这不是一个完整的空行,而只是最后一行的最后一个换行符。Unix工具(如Vim的传统)坚持要添加该功能,而Windows操作系统并不那么严格。您可以在文件为什么应该以换行符结尾处阅读更多内容

不幸的是,阻止Vim编写最终的换行符非常复杂。我的PreserveNoEOL插件可以做到这一点。有关方法的讨论,另请参见VIM在文件末尾禁用自动换行


只是向未来的读者指出,虽然这个答案当时真是太好了,但是在最新版本的Vim中,稍后发布的答案中有一个更简单的解决方案
丰富,

11

在新版的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,现在不应该在文件末尾添加换行符。

(仅自vim版本7.4.785起可用)


0

您是否尝试过以二进制模式打开文件?尝试vim -b file_name。它不应在文件末尾添加新行。


我尝试这样做,然后使用xxd进行验证,但是0a即使在二进制模式下,它仍然会添加换行符()。
詹姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.