假设我们有两个文本文档:
hi
”作为文本。hi
”作为文本。当我们在gedit,vi或vim中打开这两个文件时,这两个文件在各个方面在视觉上都是相同的。
但是,当我们xxd
在文件上运行时,会得到以下信息:
6869
6869 0a
啊哈!有一条看不见的换行符。在vim中,如果我们密切注意状态栏并碰巧了解什么[noeol]
意思,那么我们可能会继续这样做,但是在gedit中,这两个文件完全一样打开!
在一次小型调查中,当我要求人们仅使用gedit或vim区分两个文件时,它们100%的时间失败了。当我要求他们使用Leafpad或emacs完成相同的任务时,他们100%的成功率。
我了解vi和gedit希望在创建的每个文件中添加换行符(并且我承认这样做可能会有好处)。我不明白的是,为什么gedit和vim认为从用户的视觉上隐藏此换行符是有益的?尤其是当这种行为可能极具破坏性时...
(例如,以两个C程序员在他们的vi / gedit文本编辑器中看到这两个文件的内容相同,然后假设他们看到的是所得到的,继续将内容写入数组
char greeting[2]
。第一个尽管编写第一个文件的程序员虽然代码有些草率,但仍声名for起,但编写第二个文件的第二个程序员却死于悲惨的贫困之中,并被这种无形(和可预防的)堆栈溢出所迷惑和困惑。)
因此,请告诉我们,让vim和gedit之类的文本编辑器在它们创建的每个文档的末尾添加不可见的换行符,然后继续向用户隐藏这些换行符,以使这些文件的真实内容仅可见是什么,这有什么好处?使用其他文本编辑器可以检测到吗?
您认为最后一行是“视觉上隐藏的”是基于相反的观点。
许多人(尤其是具有Unix背景的人)认为文本文件应始终以换行符结尾(例如,请参见为什么文本文件应以换行符结尾?),并且允许创建文件而没有文本文件的任何文本编辑器从根本上来说都是损坏的。从这个角度来看,Vim中没有其他空行仅与这种世界观一致。文件在cat
终端中的显示与在编辑器中的显示相同。
从Vim的角度来看,缺少换行符的文件是异端和有缺陷的文件。这就是为什么它[noeol]
在加载时显示为消息的原因(在保留丢失的换行符的同时很难编辑文件;尽管我已经编写了PreserveNoEOL插件来对此进行帮助)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句