Vim show newline at the end of file
使用set eol选项,Vim会在保存文件末尾时自动添加换行符。 我有这个选项,但我希望能够在Vim中看到这个换行符,所以我知道它实际上存在。
例如,使用Vim中的文件:
和TextMate中的相同文件:
这总是欺骗我,我最终添加了第二条新线,最后才意识到。 这个完全相同的问题发布在这里,但接受的答案没有回答这部分问题。
使用set list:
我可以看到在最后一行之后有一个$字符表示一个新行,但是这也会使用这些字符来填充文件的其余部分。 我知道我可以为此设置一个切换但我真的更喜欢TextMate之类的行为。
-
tidle(~)表示没有新行。 还不够吗?
-
@BillyChan我想看到最后有一条新线。 屏幕截图中有哪些内容,即使在同一行上有一个波浪号,所以这没有多大意义?
-
我自己会发现看到$非常混乱所以我不打扰那个:)看看其他人是否对你有好的答案。
-
是的,我也不喜欢这样。
-
@BillyChan代字号(~)并不代表没有新行。 如果在最后一行的末尾有换行符,则它仍然会在下一行显示波浪号。 (如第一张图片所示)
默认情况下,'endofline'处于启用状态,因此您在~/.vimrc中不需要它。
EOL或"换行符"并不意味着"此后有空行",这意味着"这标志着行的结束,任何其他字符将显示在另一行"。"newline"!="新行"。
文件的最后一行是#21,它以"换行符"结尾。 由于在"换行"字符之后没有实际的行,没有第22行,显示第22行不仅错误而且误导。
TextMate的行为是错误的。
Vim的行为是正确的。
如果你想让Vim显示第22行,你需要明确添加该行,但这对我来说听起来相当愚蠢。
-
需要注意的一点是,这种行为是由每个本机OS X文本编辑器,而不仅仅是TextMate
-
你能发帖吗?我刚刚下载的两个最新版本的textmate上没有看到那个讨厌的行。
-
转到你的最后一行,按回车,保存,在vim中打开,你刚创建的那一行不会在那里。
-
虽然这是正确的,但这种行为的问题在于,人类读者不能轻易找出文件的最后一行是否有eol,除了底部状态行中的[noeol]符号(这太难了注意)。事实上,Win / Mac中的几乎所有GUI文本编辑器都采用了另一种方式:将换行视为行分隔符而不是行终止符,以便文件末尾的视觉外观直接告诉用户存在(或非存在)一个eol。
-
添加[noeol]符号只会在您打开文件后立即生效。一旦执行任何非平凡的操作,它将消失。
-
TextMate的行为完全没有错!世界上的每个编辑都显示vim不显示的空行!
-
@KeithSmiley,你是怎么解决这个问题的?你为什么接受这个作为解决方案?
-
@IulianOnofrei,没有可显示的行。
-
@romainl,vim test> i> enter> esc> :wq> vim test>第2行消失了!我用手指按下了输入键并键入了它,所以我希望它保留在那里,因为我是故意输入的,但它消失了! Vim错了。
-
@IulianOnofrei,不,第2行没有消失。
-
@romainl,你是真的吗?在:wq之前,侧边栏显示1 2,之后,侧边栏显示1。你想告诉我这些是平等的吗?
-
@IulianOnofrei imgur.com/a/edvBw
-
让我们在聊天中继续讨论。
-
抛开错误和正确的问题。有没有办法配置vim来显示最后一行?我的意思是将其配置为"错误"工作,因为大多数Win / Mac编辑器都这样做?
-
@ 4LegsDrivenCat,再次,没有显示的行。
-
我说"放错了什么是错的,什么是正确的"。
-
我说"没有线路可以展示"。无法将Vim配置为显示不存在的行。
-
请重读上面的neverhoodboy的评论。它解释了很多。关于维基百科的更多信息。
-
两年前我已经读过它,两年前我又写了一个类似问题的另一个更长的答案。无法显示任何行,也无法强制Vim显示不在此处的行,无论您是否对此行为感到满意。
-
Vim的"技术上并非违法"的行为仍然很烦人,因为当我输入Ga时,我几乎总想添加一个新行,而不是追加到最后一行。如果我只按enter一次保存,我不想添加两个换行符。而Vim显然确实有能力展示一条并不存在的线。每次开始编辑新文件时都会这样做。保存空文件,它是空的。在保存之前添加和删除字符,它将有一个换行符。在保存之前添加角色并撤消,然后没有换行符。靠不住的。
-
Ga是"跳转到最后一行并在光标后追加"所以没有理由使用该命令"跳转到最后一行并添加一个新行"。您可以使用Go。
-
> TextMate的行为是错误的。 > Vim的行为是正确的。大声笑?