在emacs中什么叫做环?

在emacs中什么叫做环?,emacs,elisp,circular-buffer,Emacs,Elisp,Circular Buffer,与windows风格的自解释复制/剪切/粘贴命令不同,我无法理解emacs中的ring概念 由于我不经常在emacs中编程,我可能没有意识到ring特性的价值。您能告诉我在emacs中什么叫环以及如何使用它吗?环是一种循环缓冲区。想象一下rolodex 如果你正在杀死/猛拉一个环,那么你可以在你的历史记录中前后移动。摘自:“环是一个固定大小的数据结构,支持插入、删除、旋转和模索引引用和遍历。”换句话说,它是一个。每当你在windows中复制或剪切某些内容到剪贴板时,你丢失了以前剪贴板上的内容。(

与windows风格的自解释复制/剪切/粘贴命令不同,我无法理解emacs中的ring概念


由于我不经常在emacs中编程,我可能没有意识到ring特性的价值。您能告诉我在emacs中什么叫环以及如何使用它吗?

环是一种循环缓冲区。想象一下rolodex


如果你正在杀死/猛拉一个环,那么你可以在你的历史记录中前后移动。

摘自:“环是一个固定大小的数据结构,支持插入、删除、旋转和模索引引用和遍历。”换句话说,它是一个。

每当你在windows中复制或剪切某些内容到剪贴板时,你丢失了以前剪贴板上的内容。(尽管有些程序会为您存储以前的剪贴板内容)emacs“环”会存储旧的剪贴板内容,即使在您复制/拖动/剪切/删除内容之后。如果你习惯了它,它会很方便,因为它可以让你一次在剪贴板中存储多个内容,并减少意外覆盖剪切到剪贴板的内容的机会,就像在Windows中一样。

好吧,让我用简单的话试试。每次复制(M-w)或剪切(C-w)时,所选内容都会插入到所谓的环的顶部(这就像一个封闭列表)

有趣的部分在后面。现在,如果使用C-y粘贴,则最近粘贴的区域(现在是环的前元素)将插入缓冲区中。如果继续按M-y键,则文本将依次替换为环中越来越旧的元素,也就是说,环将旋转,并且每次都将较旧的文本指定为前元素。这使您可以访问较旧的剪切/复制文本

有用的部分还不止于此。如果剪切/复制一些其他文本,它将插入到环的顶部,环将再次旋转,使顶部现在是前面。您可以再次启动C-ym-y序列,将新插入的文本指定为front

因此,总结如下:

  • 环的顶部是插入新复制/剪切(M-w/C-w)文本的位置。发生这种情况时,顶部元素将成为前部元素
  • 环的前元素是paste(又名yank)命令C-y和M-y通过将其插入缓冲区进行操作的位置。M-y还旋转环,使环中较旧的文本成为前面的文本
你可以想象一个正面固定在12小时位置的圆圈,但不是圆环的一部分。顶部是环的一部分,因此当某些命令旋转环时,顶部也会旋转


在Ubuntu上,安装了
emacs goodies el
软件包:

C-(
M-x浏览压井环
RET
C-

这定义了一个临时键盘宏,它调用
browse kill ring
C-x e

现在你不必只看杀人戒指,你可以看到里面有什么


C-w
(切割)、
M-w
(复制)、
C-y
(扬克)和
C-y M-y
(在环中下一个扬克)进行试验,然后按
C-x e
,查看对压井环的影响。

我认为这个问题在这里不是离题。这是一个关于如何在Emacs中实现剪贴板的计算机技术问题。每当有人说某些计算机技术是“不言自明的”,我想这真的只是意味着他们很久以前就学会了,他们忘记了他们不理解它的时间。:-)emacs环不是一个简单的剪贴板,当然也不是不言自明的。像往常一样,当emacs做一些事情时,它会以一种超功能、复杂的理解方式来做,这对于那些花时间学习它是值得的少数用户来说是超级强大的。更多的环函数,仅供参考:我妈妈不认为剪切/复制/粘贴是不言自明的。
browse kill ring
是标准库函数吗?我找不到它。@Török Gábor:Oops,我没有意识到它不是一个标准的库函数。它由Ubuntu上的emacs goodies el包提供。代码可在此处找到:,