剪切环是一组文本字符串的列表。它的结构如下所示:
("一些文本" "不同的文本片段" "更多文本")
如果这是我的剪切环的内容,并且我按下 C-y 键,那么包含字符串 ‘一些文本’ 的部分将被插入到我的光标所在位置。
yank
命令还用于通过复制来复制文本。复制的文本并未从缓冲区中删除,而是将其副本放入剪切环,并通过粘贴将其插入。
有三个函数用于从剪切环中恢复文本:yank
,通常绑定到 C-y;yank-pop
,通常绑定到 M-y;以及由这两个函数使用的 rotate-yank-pointer
。
这些函数通过一个称为 kill-ring-yank-pointer
的变量引用剪切环。实际上,yank
和 yank-pop
函数的插入代码为:
(insert (car kill-ring-yank-pointer))
(好了,不再是这样了。在 GNU Emacs 22 中,该函数已被 insert-for-yank
替代,它会为每个 yank-handler
段重复调用 insert-for-yank-1
。转而,insert-for-yank-1
根据 yank-excluded-properties
从插入的文本中去除文本属性。否则,它就像 insert
一样。我们将继续使用纯粹的 insert
,因为它更容易理解。)
要开始理解 yank
和 yank-pop
如何工作,首先需要查看 kill-ring-yank-pointer
变量。