12

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

是的,我理解技术含义,但这不是我的问题。这是一个问题,即使这样做是否是个好主意。Vim 和 Emacs 是我们今天常用的两个最古老的编辑器,它们也有这种行为。我知道没有新的编辑器能做到这一点。编辑什么时候停止这样做,为什么?

4

7 回答 7

30

对于初学者,Emacs 使用了大量与任何文件无关的缓冲区。每当您打开目录、阅读邮件、打开终端、编译程序、启动交互式 Python 会话或连接到数据库时,您都会得到一个缓冲区。因此,Emacs 的基本工作单元是缓冲区而不是文件,同样的逻辑也适用于 Vim。

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

于 2008-10-12T14:44:46.683 回答
11

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

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

认为这已经过时了吗?一个想法回归的地方是在浏览器中,标签和网页之间没有 1-1 的对应关系。相反,在每个选项卡内,您可以在多个页面之间前后导航。没有人会尝试为 Web 制作 MDI 类型的界面,其中每个页面都有自己的内部窗口。这将是不可能的繁琐使用。它只是无法扩展

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

a)您将能够在同一个缓冲区/选项卡中的多个文件之间建立超链接(并且会有一个后退按钮等)

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

换句话说,大部分 Vim / Emacs 模型,除了经过调整以更符合浏览器正在做出的发现。

于 2008-10-12T16:32:09.917 回答
6

因为多个缓冲区可以向您显示同一文件的不同视图。我不知道其他编辑器,但 Emacs 确实如此。你到底是什么意思与老?

于 2008-10-12T14:32:36.083 回答
1

当应用程序开始被那些不想用不相关的细节困扰自己的非极客们大量使用时。

于 2008-10-12T15:55:01.427 回答
0

我认为新编辑放弃这样做的原因是你所说的,它是一种抽象,只会妨碍你。此外,大多数现代编辑器都具有无限撤消功能,因此“缓冲区”的概念是隐含的。

于 2008-10-12T13:36:14.403 回答
0

我想我只是一个老顽固(在顽固的 vim 阵营中),但我使用的其他编辑包,如 MS Word 或 Open Office,保留了我正在编辑的文件副本和最后保存的版本。这绝对是无价之宝——我不希望编辑践踏我的最后一个好版本,直到我准备好这样做。确实,有很大的机会(比如千分之一)我将使用正在编辑的缓冲区创建一个新文件。

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

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

于 2008-10-12T14:21:13.173 回答
-2

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

于 2008-10-12T16:02:38.163 回答