删除环是一个由文本字符串组成的列表,形式如下:
("some text" "a different piece of text" "yet more text")
如果这是我的删除环内容,按下 C-y 后, 字符串 ‘some text’ 就会插入到光标所在位置。
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 变量。