你能强制 Vim 在文件末尾显示一个空行吗?
Posted
技术标签:
【中文标题】你能强制 Vim 在文件末尾显示一个空行吗?【英文标题】:Can you force Vim to show a blank line at the end of a file? 【发布时间】:2010-11-15 02:39:33 【问题描述】:当我在记事本中打开一个文本文件时,如果在包含文本的最后一行的末尾有回车,它会显示一个空行。然而,在 Vim 中它不显示这个空行。我注意到的另一件事是,Vim 编辑器默认添加回车到最后一行(即使它没有显示)。我知道,因为如果我在记事本中打开一个在 Vim 中创建的文件,它会在文件末尾显示一个空白行。
无论如何,我可以忍受这两个差异,但我想知道 Vim 中是否有一个选项可以让你切换这种行为。
谢谢
PS - GVim 7.2
[更新]
改为使用服务器故障是否有意义?
[更新 2]
我会改写一下...我需要知道单行文件末尾何时有回车(记事本显示了一个没有文本的额外行,我无法告诉 Vim)。这是由于 Progress 程序读取文本文件(预期为单行,但带有回车)并出于某种目的解析文本。如果没有回车,Progress 会将该行视为 null。
[解决方法] 我发现确保有回车的一种方法(但请确保我不添加第二个)是确保我打开了行尾写入选项(:set eol),然后执行写入/保存。如果文件不存在,这将在文件中添加行尾。否则,它不会添加新的。
【问题讨论】:
在 serverfault 上没有任何意义。也许在超级用户上。但似乎共识是在这里容忍 vim 问题,因为 vim 被认为是一个 IDE。 好的,谢谢……我想知道 SuperUser 是否已经结束了私人测试版……我想我可以去看看 它仍处于测试阶段,但不是私测,而是半私测:blog.***.com/2009/07/… 【参考方案1】::help endofline
解释如何阻止 vim 添加额外的换行符。
【讨论】:
解决了一个问题……虽然对我来说是另一个问题(没有显示有空行)=\ 与需要确保有回车有关在一行的末尾(并且只有一个)。 我同意我想要这条线我也希望能够看到它在那里。【参考方案2】:似乎vim将换行符视为行终止符,而记事本将其视为行分隔符:来自http://en.wikipedia.org/wiki/Newline
还有一些困惑 换行符终止或分隔行。 如果换行符被认为是 分隔符,不会有换行符 在文件的最后一行之后。这 大多数系统的一般约定是 甚至在最后一个之后添加换行符 行,即将换行符视为一行 终结者。有些程序有 处理 a 的最后一行的问题 文件,如果它不是换行符终止。 相反,期望的程序 用作分隔符的换行符将 将最后的换行解释为开始 一个新的(空)行。这可能导致 报告了不同的行数 对于文件,但在其他情况下 一般无害。
如果我没记错的话,在 unix-y 系统上,文本文件必须以换行符结束。
【讨论】:
【参考方案3】:一个有用的 Vim 选项是
set list
它将帮助您查看所有行尾字符(可能还有其他通常不可见的字符)。因此,您将能够直接在 Vim 中查看最后一个 endofline,而不仅仅是在记事本中。
【讨论】:
这似乎总是显示一个 $ 字符。即使后面没有空行。 后面没有空行。 vim 认为行的末尾有换行符。你说的空行没有换行,所以vim断定没有什么可显示的。 查看更新 2 cmets... 将问题改写为更准确。 我确认即使“差异”打印出这些文件之间的差异,使用:set list
这些文件似乎是相同的。【参考方案4】:
当您在 VIM 中打开文件时,状态行应在文件名后显示[noeol]
。这是一个迹象。正如Manni 所说,您可以通过关闭endofline
选项和打开binary
选项来更改此设置。您可以在 .vimrc
文件中将此设置为默认设置。
【讨论】:
以上是关于你能强制 Vim 在文件末尾显示一个空行吗?的主要内容,如果未能解决你的问题,请参考以下文章