【问题标题】:Vim show newline at the end of fileVim 在文件末尾显示换行符
【发布时间】:2013-03-16 09:25:14
【问题描述】:

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

以 Vim 中的文件为例:

和TextMate中的同一个文件:

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

使用set list

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

【问题讨论】:

  • tidle(~) 表示没有换行。这还不够吗?
  • @BillyChan 我想看看结尾有 一个新行。屏幕截图中有哪个,即使同一行上有一个波浪号,所以这没有多大意义?
  • 我自己会觉得看到$ 很困惑,所以我不会为此烦恼:) 看看其他人是否有好的答案。
  • 是的,我也不喜欢那样。
  • @BillyChan 波浪号 (~) 并不意味着没有新行。如果最后一行的末尾有换行符,它仍然会在下一行显示一个波浪号。 (如第一张图片)

标签: vim newline eof


【解决方案1】:

'endofline' 默认处于开启状态,因此您的~/.vimrc 中不需要它。

EOL 或“换行符”并不意味着“这里后面有一个空行”,它的意思是“这标志着该行的结束,任何其他字符都将显示在另一行上”。 "换行" != "换行"。

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

TextMate 的行为是错误的。

Vim 的行为是正确的。

如果您希望 Vim 显示第 22 行,您需要明确添加该行,但对我来说这听起来很傻。

【讨论】:

  • 需要注意的一点是,每个原生 OS X 文本编辑器都有这种行为,而不仅仅是 TextMate
  • 虽然正确,但这种行为的问题在于,除了[noeol] 标记在底部状态之外,人类读者无法轻易找出文件最后一行是否存在 eol线(这太难注意到了)。由于几乎所有 Win/Mac 中的 GUI 文本编辑器都采用另一种方式,情况变得更糟:将换行符视为行分隔符而不是行终止符,以便文件末尾的视觉外观直接告诉用户存在(或非存在)一个eol。
  • TextMate 的行为一点都没错!世界上的每个编辑器都会显示 vim 不显示的空行!
  • @KeithSmiley,你是如何解决这个问题的?你为什么接受这个作为解决方案?
  • 抛开什么是错什么是对的。有没有办法配置 vim 以显示最后一行?我的意思是像大多数 Win/Mac 编辑器一样将其配置为“错误地”工作?
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 2014-05-28
  • 2013-04-28
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多