当我在记事本中打开文本文件时,如果在包含文本的最后一行末尾有回车符,则会显示一个空行。但是,在Vim中它不显示此空行。我注意到的另一件事是Vim编辑器默认情况下将回车符添加到最后一行(即使它没有显示)。我可以告诉你,因为如果我在记事本中打开一个在Vim中创建的文件,它会在文件末尾显示一个空行。
无论如何,我可以忍受这两个差异,但我想知道Vim中是否有一个允许你切换这种行为的选项。
由于
PS - GVim 7.2
[更新]
改为使用Server Fault是否有意义?
[更新2]
我将改述这一点......我需要知道单行文件末尾有回车符(记事本显示没有文字的额外行,Vim我无法分辨)。这是因为Progress程序读取一个文本文件(需要一行,但带有回车符)并为某种目的解析文本。如果没有回车符,则Progress会将该行视为null。
[解决方法解决方案] 我发现确保有回车符(但确保我不添加第二个)的一种方法是确保我打开了行尾写入选项(:set eol)然后只做一个写/保存。如果文件尚未存在,这将在文件中放置一行。否则,它不会添加新的。
答案 0 :(得分:6)
:help endofline
解释了如何阻止vim添加额外的换行符。
答案 1 :(得分:3)
似乎vim将换行视为行终止符,而记事本将其视为行分隔符:来自http://en.wikipedia.org/wiki/Newline
是否存在一些混淆 换行符终止或分隔行。 如果换行符被认为是 分隔符,将没有换行符 在文件的最后一行之后。该 大多数系统的一般惯例是 即使在最后一个之后添加换行符 line,即将换行视为一行 终止。有些课程有 处理最后一行的问题 文件,如果它不是换行符终止。 相反,期望的程序 要用作分隔符的换行符 将最终换行符解释为开头 一条新的(空的)线。这可能导致 报告的行数不同 对于该文件,但不是 一般无害。
如果我没记错的话,在unix-y系统上,文本文件必须以换行符终止。
答案 2 :(得分:2)
一个有用的Vim选项是
set list
它将帮助您查看所有行结束字符(以及可能还有其他通常不可见的字符)。因此,您将能够直接在Vim中查看最后一个内行,而不仅仅是在记事本中。
答案 3 :(得分:1)
在VIM中打开文件时,状态行应在文件名后面显示[noeol]
。这是一个迹象。正如Manni所述,您可以通过同时关闭endofline
选项和binary
选项来更改此设置。您可以将其设置为.vimrc
文件中的默认设置。