繁体   English   中英

你能强制 Vim 在文件末尾显示一个空行吗?

[英]Can you force Vim to show a blank line at the end of a file?

当我在记事本中打开一个文本文件时,如果在最后一行包含文本的末尾有回车符,它会显示一个空行。 然而,在 Vim 中它不显示这个空行。 我注意到的另一件事是,Vim 编辑器默认添加回车到最后一行(即使它没有显示)。 我知道,因为如果我在记事本中打开一个在 Vim 中创建的文件,它会在文件末尾显示一个空白行。

无论如何,我可以忍受这两个差异,但我想知道 Vim 中是否有一个选项可以让你切换这种行为。

谢谢

PS-GVim 7.2

[更新]

改为在服务器故障上有意义吗?

[更新 2]

我会改写一下...我需要知道单行文件末尾何时有回车(记事本显示了一个没有文本的额外行,我无法分辨 Vim)。 这是由于 Progress 程序读取文本文件(预期为单行,但带有回车)并出于某种目的解析文本。 如果没有回车,Progress 将该行视为 null。

[解决方法]我发现确保有回车的一种方法(但请确保我不添加第二个)是确保我打开了行尾写入选项(:set eol)和然后只需执行写入/保存。 如果文件不存在,这将在文件中添加行尾。 否则,它不会添加新的。

:help endofline

解释了如何阻止 vim 添加额外的换行符。

似乎 vim 将换行符视为行终止符,而记事本将其视为行分隔符:来自http://en.wikipedia.org/wiki/Newline

换行符是否终止或单独的行也存在一些混淆。 如果换行符被视为分隔符,则文件的最后一行之后将没有换行符。 大多数系统的一般约定是在最后一行之后添加换行符,即将换行符视为行终止符。 如果文件不是换行符终止,则某些程序在处理文件的最后一行时会出现问题。 相反,期望换行符用作分隔符的程序会将最终换行符解释为开始新(空)行。 这可能会导致为文件报告不同的行数,但通常是无害的。

如果我没记错的话,在 unix-y 系统上,文本文件必须以换行符终止。

一个有用的 Vim 选项是

set list

它将帮助您查看所有行尾字符(可能还有其他通常不可见的字符)。 因此,您将能够直接在 Vim 中查看最后一个 endofline,而不仅仅是在记事本中。

当您在 VIM 中打开文件时,状态行应在文件名后显示[noeol] 这是一个迹象。 正如Manni所说,您可以通过关闭endofline选项和打开binary选项来更改此设置。 您可以在.vimrc文件中将此设置为默认设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM