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

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

由于

PS - GVim 7.2

<强> [更新]

改为使用Server Fault是否有意义?

[更新2]

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

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

有帮助吗?

解决方案

:help endofline

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

其他提示

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

  

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

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

一个有用的Vim选项是

set list

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

当您在VIM中打开文件时,状态行应在文件名后面加上 [noeol] 。这是一个迹象。正如 Manni 所述,您可以通过同时设置 endofline 选项和二进制选项。您可以将其设置为 .vimrc 文件中的默认设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top