13

当我在记事本中打开一个文本文件时,如果在最后一行包含文本的末尾有回车符,它会显示一个空行。然而,在 Vim 中它不显示这个空行。我注意到的另一件事是,Vim 编辑器默认添加回车到最后一行(即使它没有显示)。我知道,因为如果我在记事本中打开一个在 Vim 中创建的文件,它会在文件末尾显示一个空白行。

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

谢谢

PS-GVim 7.2

[更新]

改为在服务器故障上有意义吗?

[更新 2]

我会改写这个......我需要知道单行文件末尾何时有回车(记事本显示了一个没有文本的额外行,我无法分辨 Vim)。这是由于 Progress 程序读取文本文件(预期为单行,但带有回车)并出于某种目的解析文本。如果没有回车,Progress 将该行视为 null。

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

4

4 回答 4

6
:help endofline

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

于 2009-07-29T15:09:37.383 回答
3

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

换行符是否终止或单独的行也存在一些混淆。如果换行符被视为分隔符,则文件的最后一行之后将没有换行符。大多数系统的一般约定是在最后一行之后添加换行符,即将换行符视为行终止符。如果文件不是换行符终止,则某些程序在处理文件的最后一行时会出现问题。相反,期望换行符用作分隔符的程序会将最后的换行符解释为新(空)行的开始。这可能会导致为文件报告不同的行数,但通常是无害的。

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

于 2009-07-30T10:52:27.813 回答
2

一个有用的 Vim 选项是

set list

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

于 2009-07-29T15:40:17.837 回答
1

当您在 VIM 中打开文件时,状态行应该[noeol]在文件名之后显示。这是一个迹象。正如Manni所说,您可以通过将endofline选项设置为关闭和打开来更改此设置binary。您可以将其设置为.vimrc文件中的默认设置。

于 2009-07-29T18:44:22.293 回答