为什么VIM在文件的末尾添加新行? 我经常使用WordPress,有时我暂时更改了WordPress Core文件,以了解发生了什么,尤其是在调试时。今天我有些惊喜。当我是r ...

问题描述 投票:0回答:3
来查看发生了什么变化。我将项目上的文件与我在下载目录中保留的WordPress副本上的文件进行了比较。事实证明,文件在最后有所不同。

diff

表示原始文件末尾缺少一个新线:
1724c1724
< }
\ No newline at end of file
---
> }
我甚至从未碰过那条线。我在大文件中间的某个地方进行的更改。这使我认为VIM在文件末尾添加了一个newline字符。为什么会发生?
    

我在这里看到的所有答案都解决了一个问题:“
如何阻止vim在文件末尾添加一个newline字符?

”,而问题是”

为什么vim在末尾添加新行文件?
vim diff newline
3个回答
67
投票
与POSIX标准定义线路的方式有关(请参见文件为什么要以newline结尾?

)。因此,基本上,一行是:

3.206线

零或更多非字符的序列以及终止字符。

因此,他们都需要以新线角色结束。这就是为什么VIM始终默认添加新线(因为根据Posix,它应该始终存在)。
它不是唯一这样做的编辑。
Geditgnome
中的默认文本编辑器,执行相同的确切功能。
eDit 其他工具也期望该纽线字符。例如,请参见:

如何期望。

GCC警告它。 ,您也可能对:vim在文件末尾显示newline。


由于

wc

文本编辑器,有时可以为您“清理”文件。有关如何在不结束纽带的情况下写作的详细信息,请参见

http://vimhelp.appspot.com/vim_faq.txt.html#faq-5.4

   :set binary


22
投票
   

:set noeol


   :w

    

添加newline是VIM的默认行为。如果您不需要它,请使用此解决方案:VIM在文件末尾禁用自动newline。 to禁用,将其添加到您的.vimrc

:set noeol


您可以将以下行放入您的.vimrc
:w ++bin
应该解决这个问题,但实际上您的方法有些不对劲。首先
set fileformats+=dos
根本不介意结束,其次,如果您不想保存更改,请不要按
autocmd FileType php setlocal noeol binary
或更糟糕的是手动尝试重新创建文件的状态
php
。如果您离开编辑并出于某种原因保存,请尝试
u




3.206线 零或更多非字符和终止字符的序列。
,vim将允许您打开一个新文件,编写文件,并且该文件为零字节。  如果您打开一个新文件并使用

q!
附加行,则写入文件,它将长两个字符。 如果您打开所述文件备份并删除第二行并写入文件,则将是一个字节长。 打开文件备份并删除唯一的剩余行,然后写入将为零字节的文件。 因此,vim只要完全为空,就可以让您编写一个零字节文件。 似乎无视上面的POSIX定义。 我猜...

6
投票

使用VIM创建地图文件时,我遇到了相同的问题。当我用VS代码创建地图时,我的代码运行得很好,但是我的一位同事试图测试我的代码并创建了VIM的地图。繁荣!我有细分市场的错误。 经过多次测试,我意识到VIM总是意外地增加了一个' '像eof一样。但是VS代码没有。所以我很困惑! 最后,我在此问题中得到了确认。非常感谢您的问题和下面的答案!

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.