6

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

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

4

5 回答 5

12

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

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

有用的部分并没有到此结束。如果您剪切/复制一些其他文本,它将被插入到圆环的顶部,并且圆环将再次旋转,使得top现在是front。您可以重新开始C-y M-y序列,将新插入的文本指定为front

所以,总结一下:

  • 环的顶部是插入新复制/剪切 ( M-w/C-w) 文本的位置。发生这种情况时,顶部元素将成为前端元素。
  • 环的前部元素是粘贴(又名 yank)命令C-yM-y操作的地方,通过将其插入缓冲区。M-y还旋转环,使环中较旧的文本成为front

您可以通过想象前面固定在 12 小时位置的圆圈来形象化它,但不是环的一部分。相反,顶部是环的一部分,因此当某些命令旋转环时,顶部也会旋转。

替代文字

于 2010-10-15T21:06:43.773 回答
4

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

于 2010-10-15T15:36:49.890 回答
3

环是一个循环缓冲区。想想一个通讯录。

如果您正在杀戮/猛拉戒指,那么您可以在您的历史中前进和后退。

于 2010-10-15T15:34:06.203 回答
2

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

C-( M-x browse-kill-ring RET C-)

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

现在您不必只阅读杀戮戒指,您实际上可以看到里面有什么。

尝试使用C-w(cut)、M-w(copy)、C-y(yank) 和C-y M-y(yank next in ring),然后按C-x e查看对 kill ring 的效果。

于 2010-10-30T16:20:46.733 回答
1

来自Emacs 手册:“环是一种固定大小的数据结构,支持插入、删除、旋转以及模索引引用和遍历。” 换句话说,它是一个循环队列

于 2010-10-15T15:35:50.070 回答