Vim在文件末尾显示换行符

Kei*_*ley 38 vim newline eof

使用set eol选项Vim会在保存文件末尾时自动添加换行符.我有这个选项,但我希望能够在Vim中看到这个换行符,所以我知道它实际上存在.

例如,在Vim中有一个文件: Vim截图

和TextMate中的相同文件: TextMate截图

这总是欺骗我,我最终添加了第二条新线,最后才意识到.这个完全相同的问题发布在这里,但接受的答案没有回答这部分问题.

使用set list:列出截图

我可以看到$在最后一行之后有一个字符表示一个新行,但是这也用这些字符填充了文件的其余部分.我知道我可以为此设置一个切换但我真的更喜欢TextMate之类的行为.

rom*_*inl 15

'endofline'默认情况下处于启用状态,因此您不需要它~/.vimrc.

EOL或"换行符"并不意味着"此后有空行",这意味着"这标志着行的结束,任何其他字符将显示在另一行"."newline"!="新行".

文件的最后一行是#21,它以"换行符"结尾.由于在"换行"字符之后没有实际的行,没有第22行,显示第22行不仅错误而且误导.

TextMate的行为是错误的.

Vim的行为是正确的.

如果你想让Vim显示第22行,你需要明确添加该行,但这对我来说听起来相当愚蠢.

  • 需要注意的一点是,这种行为是由每个本机OS X文本编辑器,而不仅仅是TextMate (9认同)
  • TextMate的行为完全没有错!世界上的每个编辑都显示vim不显示的空行! (9认同)
  • 虽然这是正确的,但这种行为的问题在于,人类读者不能轻易找出文件的最后一行是否有一个eol,除了底部状态行中的"[noeol]"符号(这也是很难注意到.事实上,Win/Mac中的几乎所有GUI文本编辑器都采用了另一种方式:将换行视为行分隔符而不是行终止符,以便文件末尾的视觉外观直接告诉用户存在(或非存在)一个eol. (8认同)
  • 转到你的最后一行,按回车,保存,在vim中打开,你刚创建的那一行不会在那里. (3认同)
  • @KeithSmiley,您如何解决问题?您为什么接受此作为解决方案? (2认同)
  • @romainl,`vim test`>`i`>`enter`>`esc`>`:wq`>`vim test`>第2行不见了!我用手指手动按下Enter键并输入了它,所以我希望它会保留在那里,因为我是故意输入的,但是它消失了!Vim是错误的。 (2认同)
  • 抛开什么是错误的,什么是正确的。有没有一种方法可以配置vim以显示最后一行?我的意思是将其配置为像大多数Win / Mac编辑器一样“不正确地”工作吗? (2认同)
  • 我说“不管什么是错的,什么是对的”。 (2认同)