10.1 剪切环概述

剪切环是一组文本字符串的列表。它的结构如下所示:

("一些文本" "不同的文本片段" "更多文本")

如果这是我的剪切环的内容,并且我按下 C-y 键,那么包含字符串 ‘一些文本’ 的部分将被插入到我的光标所在位置。

yank 命令还用于通过复制来复制文本。复制的文本并未从缓冲区中删除,而是将其副本放入剪切环,并通过粘贴将其插入。

有三个函数用于从剪切环中恢复文本:yank,通常绑定到 C-yyank-pop,通常绑定到 M-y;以及由这两个函数使用的 rotate-yank-pointer

这些函数通过一个称为 kill-ring-yank-pointer 的变量引用剪切环。实际上,yankyank-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,因为它更容易理解。)

要开始理解 yankyank-pop 如何工作,首先需要查看 kill-ring-yank-pointer 变量。