问题 你能强迫Vim在文件末尾显示一个空行吗?


当我在记事本中打开文本文件时,如果在包含文本的最后一行末尾有回车符,则显示一个空行。但是,在Vim中它不显示此空行。我注意到的另一件事是Vim编辑器默认情况下将回车符添加到最后一行(即使它没有显示)。我可以告诉你,因为如果我在记事本中打开一个在Vim中创建的文件,它会在文件末尾显示一个空行。

无论如何,我可以忍受这两个差异,但我想知道Vim中是否有一个允许您切换此行为的选项。

谢谢

PS - GVim 7.2

[更新]

改为服务器故障是否有意义?

[更新2]

我会改写这个...我需要知道单行文件末尾有回车符(记事本显示没有文字的额外行,Vim我说不清楚)。这是由于Progress程序读取一个文本文件(需要一行,但带有回车符)并为某种目的解析文本。如果没有回车符,则Progress会将该行视为null。

[解决方法] 我发现确保有回车符(但确保我不添加第二个)的一种方法是确保我打开了行结束选项(:set eol)然后只做一个写/保存。如果文件尚未存在,这将在文件中放置一行。否则,它不会添加新的。


5050
2017-07-29 14:53


起源

它在serverfault上没有任何意义。也许是超级用户。但似乎这里的共识是容忍vim问题,因为vim被认为是IDE。 - innaM
好的,谢谢......我想知道SuperUser是否还没有私人测试版...我想我可以去检查一下 - Jason Down
它仍然处于测试阶段,但不是私有的,而是半私有测试版: blog.stackoverflow.com/2009/07/... - innaM
谢谢,刚刚报名参加。 - Jason Down


答案:


:help endofline

解释了如何阻止vim添加额外的换行符。


6
2017-07-29 15:09



解决了一个问题...它是另一个问题(没有显示有一个空白行)对我来说是一个更大的问题但是= \需要确保在一行的末尾有一个回车符(和只有一个)。 - Jason Down
我同意我想要那里的线路我也希望能够看到它在那里。 - Keith Smiley


似乎vim将换行视为行终止符,而记事本将其视为行分隔符:from http://en.wikipedia.org/wiki/Newline

还有一些混乱   换行符终止或分隔行。   如果换行符被认为是   分隔符,将没有换行符   在文件的最后一行之后。该   大多数系统的一般惯例是   即使在最后一个之后添加换行符   line,即将换行视为一行   终止。有些课程有   处理最后一行的问题   文件,如果它不是换行符终止。   相反,期望的程序   要用作分隔符的换行符   将最终换行符解释为开头   一条新的(空)线。这可能导致   报告的行数不同   对于该文件,但不是   一般无害。

如果我没记错的话,在unix-y系统上,文本文件必须以换行符终止。


3
2017-07-30 10:52





一个有用的Vim选项是

set list

它将帮助您查看所有行的字符(以及可能的其他通常不可见的字符)。因此,您将能够直接在Vim中查看最后一个内行,而不仅仅是在记事本中。


2
2017-07-29 15:40



这似乎总是显示一个$字符。即使之后没有空行。 - Jason Down
之后没有空白行。 vim认为一行在其末尾有一个换行符。您正在谈论的空白行没有换行符,因此vim得出结论,没有任何内容可以显示。 - innaM
请参阅更新2评论...重新编写问题更准确。 - Jason Down
我确认即使“diff”打印出这些文件之间的差异,使用 :set list 那些文件看起来是完全相同的。 - ROMANIA_engineer


当您在VIM中打开文件时,状态行应该说明 [noeol] 文件名后面。这是一个迹象。如 曼尼 说,你可以通过设置两者来改变这一点 endofline 选项关闭和 binary 选项。您可以将其设置为a中的默认设置 .vimrc文件。


1
2017-07-29 18:44