当我在记事本中打开一个文本文件时,如果最后一行包含文本的末尾有一个回车符,它会显示一个空行。但是,在Vim中,它不会显示这个空行。我注意到的另一件事是,Vim编辑器默认会在最后一行添加一个回车符(即使它没有显示出来)。我能看出来,因为如果我在记事本中打开一个在Vim中创建的文件,它会在文件的末尾显示一个空行。
无论如何,我可以接受这两个差异,但我想知道Vim中是否有一个选项允许您切换这种行为。
谢谢
PS -通用车辆识别码7.2
[更新]
这对服务器故障有意义吗?
[更新2]
我需要知道什么时候在单行文件的末尾有一个回车符(记事本显示了一个没有文本的额外行,而Vim我不能告诉你)。这是由于Progress程序读取了一个文本文件(期望有一行,但是有一个回车符),并出于某种目的解析了文本。如果没有回车符,Progress会将该行视为空。
**[Workaround Solution]**我发现确保有回车符(但确保不添加第二个回车符)的一种方法是确保我打开了行尾写入选项(:set eol),然后只执行写入/保存操作。如果文件中没有行尾,这将在文件中添加一个行尾。否则,它不会添加新的行尾。
4条答案
按热度按时间zrfyljdw1#
解释了如何阻止Vim添加额外的换行符。
k5ifujac2#
Vim似乎将换行符视为行终止符,而记事本将其视为行分隔符:从http://en.wikipedia.org/wiki/Newline开始
换行符是终止还是分隔行也有一些混淆。如果换行符被认为是分隔符,那么在文件的最后一行之后就没有换行符了。大多数系统的一般惯例是在最后一行之后添加换行符,也就是说,将换行符视为行终止符。如果文件的最后一行不是以换行符终止的,一些程序在处理它时会有问题。相反,希望换行符被用作分隔符的程序会将最后一个换行符解释为开始一个新(空)行。2这会导致报告的文件行数不同,但通常是无害的。
如果我没记错的话,在unix-y系统上,文本文件必须以换行符结束。
1bqhqjot3#
一个有用的Vim选项是
它将帮助你看到所有的行尾字符(可能还有其他一般看不见的字符)。所以你将能够直接在Vim中查看最后一个行尾字符,而不仅仅是在记事本中。
jjhzyzn04#
当你在VIM中打开文件时,状态行应该在文件名后面显示
[noeol]
。这是一个指示。正如Manni所说,你可以通过关闭endofline
选项和打开binary
选项来改变它。你可以在.vimrc
文件中将其设置为默认设置。