如何阻止vim在文件末尾添加新行?

342

我在PHP团队工作,我们都使用不同的编辑器,并且必须在Windows上工作。我使用vim,但是每当我编辑一个文件时,所有人都抱怨底部会有一个换行符。我找到了相关资料,发现这是vi和vim的已知行为...但我想知道是否有方法可以禁用此功能(最好是只针对特定的文件扩展名)。

如果有人知道如何做到这一点,那就太好了!


41
你应该告诉他们他们的想法有些傻 - vim这样做实际上是有很好的原因的:https://dev59.com/b3RB5IYBdhLWcg3wET1J。我猜只有在部署到类Unix服务器时才相关。 - hdgarrood
7
官方PHP推荐的做法是省略最后一个?>闭合标签,就是出于这个原因。 - Sebastián Grignoli
这个问题可能早于超级用户网站的存在...但应该在那里。 - gcb
35
问题实际上是:我们如何告诉所有其他编辑器,在你的工作室中使用的人们,确保文件的最后一行确实以EOL结尾。;-) - T.J. Crowder
14个回答

2
我认为我已经找到了比被接受的答案更好的解决方案。其他替代方案对我来说都不起作用,而且我也不想一直在二进制模式下工作。幸运的是,这个方法似乎可以完成任务,我还没有遇到任何令人讨厌的副作用:保留文本文件末尾缺失的换行符。我只需将整个内容添加到我的~/.vimrc文件中即可。

1

您是否能够使用特殊命令来保存这些文件?

如果您执行:set binary,:w和:set nobinary,如果一开始没有换行符,则文件将被写入而不带有换行符。

当然,这些命令序列可以放入用户定义的命令或映射中。


不幸的是,由于我正在使用windows操作系统,如果我以二进制模式保存文件,它会强制将保存格式转换为unix模式。即使我使用命令:set binary :set fileformat=dos :w :set nobinary,在退出时它仍然会以unix格式保存文件...我简直无法相信没有办法解决这个问题。 - Boushley

0

我发现这个 VimScript 插件对于这种情况非常有帮助。

Plugin 'vim-scripts/PreserveNoEOL'

或者在GitHub上阅读更多内容。


0
在neovim中,你可以使用
vim.opt.fixendofline = false 在lua配置文件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接