为什么像Vim和Emacs这样的旧编辑器会在界面中暴露文件和缓冲区之间的区别?

时间:2008-10-12 13:27:09

标签: vim emacs editor

我的问题有意义吗?使用Vim或Emacs,您会发现接口公开了代码在缓冲区中编辑的文件状态的表示,该文件是磁盘存储,您可以填充缓冲区或写入缓冲区。程序员知道的所有这些东西,但只是编辑文本时,它为什么暴露?任何较新的编辑器都会告诉您“这是一个文件。编辑它。”

是的,我理解技术的含义,但这不是我的问题。这个问题甚至不是关于它是否是一个好主意。 Vim和Emacs是我们今天常用的两个最古老的编辑器,他们分享这种行为。我知道没有新的编辑器做同样的事情。编辑何时停止这样做以及为什么?

7 个答案:

答案 0 :(得分:30)

首先,Emacs使用大量与任何文件无关的缓冲区。每当您打开目录,阅读邮件,打开终端,编译程序,启动交互式Python会话或连接到数据库,您都会获得缓冲区。因此,Emacs的基本工作单元是缓冲区而不是文件,Vim也有相同的逻辑。

编辑文件的新应用程序没有区别,因为每个屏幕或窗口或选项卡都直接表示文件。在这方面,Emacs和Vim等功能更强大的应用程序更加灵活。

答案 1 :(得分:10)

好的,这是我奇怪的哲学答案:

因为编辑器中缓冲区之间的后期绑定和您正在处理的实际具体事物,为编辑环境提供了更大的灵活性和强大功能。

认为这已经过时了?这个想法带回复的地方是浏览器,在这里你没有选项卡和网页之间的1-1对应关系。相反,在每个标签内,您可以在多个页面之间向前和向后导航。没有人会尝试为网络制作MDI类型的界面,其中每个页面都有自己的内部窗口。使用它是不可思议的。它只是 scale

就个人而言,我认为IDE现在变得太复杂了,文档和缓冲区之间的静态绑定就是这个原因之一。我希望在某些时候会有一个突破,因为他们转向类似浏览器的选项卡缓冲模型,其中:

a)你可以在同一缓冲区/标签内的多个文件之间进行超链接(并且还有一个后退按钮等)。

b)通用缓冲区将能够保存任何类型的数据:源代码,命令行,动态生成的图形输出,项目大纲等。

换句话说,很多Vim / Emacs模型,除了调整以更好地与浏览器发现的发现一致。

答案 2 :(得分:6)

因为多个缓冲区可以显示同一文件的不同视图。我不知道其他编辑,但Emacs也是如此。你对Old的看法是什么意思?

答案 3 :(得分:1)

当应用程序开始被非极客们大量使用时,他们不想让自己陷入无关紧要的细节之中。

答案 4 :(得分:0)

我认为新编辑因为你所说的原因而放弃了它,这是一个抽象的东西。此外,大多数现代编辑都有无限制的撤销,因此“缓冲”的概念是隐含的。

答案 5 :(得分:0)

我想我只是一个古老的模糊(在顽固的vim阵营中),但我使用的其他编辑软件包,例如MS Word或Open Office,保留了我的文件副本之间的区别m编辑和上次保存的版本。这是非常宝贵的 - 我不希望编辑器践踏我最后一个好的版本,直到我准备好这样做。事实上,有一个很好的机会(比如千分之一),我将使用我正在编辑的缓冲区创建一个新文件。

另一方面,通过读取多个文件(同一文件的多个副本或几个不同文件的副本)来创建文件图像的能力也很有用。其他文件中有类似的设施。

所以,我可能会忽略这一点 - 我不知道你指的是哪些编辑器取消了区别。但我认为所有编辑都保留了您正在编辑的文件副本与保存到磁盘的最后一个版本之间的区别。

答案 6 :(得分:-2)

因为那些编辑的开发人员并不关心隐藏用户的实现细节。