10.1 删除环概览

删除环是一个由文本字符串组成的列表,形式如下:

("some text" "a different piece of text" "yet more text")

如果这是我的删除环内容,按下 C-y 后, 字符串 ‘some text’ 就会插入到光标所在位置。

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 变量。