与 Windows 风格的自我解释复制/剪切/粘贴命令不同,我无法理解 Emacs 中ring概念。由于我并不经常在 Emacs 中编程,可能没有意识到 ring 功能的价值。你能告诉我 Emacs 中的 ring 是什么以及如何使用它吗?
简单来说,每次你使用复制 (M-w) 或剪切 (C-w) 命令时,所选中的文本会被插入到一个称为“环”(类似于封闭的列表)的顶部。
有趣的部分在于接下来。如果你使用粘贴命令 C-y,那么最近粘贴的文本(现在是环的前端元素)会被插入到缓冲区中。如果继续按下 M-y,那么文本将被依次替换为来自环中旧的元素,也就是说,环被旋转,以前的文本每次都被指定为 front 元素。这使你可以访问早期的剪切/复制文本。
好用的部分不仅仅是这样。如果你剪切/复制其他文本,它将插入到环的 top 处,并再次旋转环,使得 top 成为了新的 front。然后你可以重新开始使用 C-y M-y 命令序列,并将新插入的文本指定为 front。
因此,总结一下:
在Windows中,每次你复制或剪切东西到剪切板上时,之前剪切板上的内容就会被覆盖。(尽管有些程序会为你存储先前的剪贴板内容)但是,Emacs的“环”可以在复制/粘贴/剪切/删除内容后仍然保存旧的剪贴板内容。如果你习惯使用它,它可能很方便,因为它允许你一次性存储多个剪贴板内容,并减少了在Windows中不小心覆盖你所剪切到剪切板上的某些内容的几率。
环是一个循环缓冲区。可以把它想象成转盘式名片盒。
如果你将信息存入环中,那么可以在历史记录中前后移动。
emacs-goodies-el
软件包后:C-(
M-x browse-kill-ring
RET
C-)
这将定义一个临时键盘宏,调用browse-kill-ring
当您按下C-x e
。C-w
(剪切),M-w
(复制),C-y
(粘贴)和C-y M-y
(粘贴环中的下一个),然后按下C-x e
以查看对kill ring的影响。browse-kill-ring
是一个标准库函数吗?我找不到它。 - viam0Zah