变量 kill-ring 保存剪切环内容,形式为字符串列表。
最新剪切的内容始终位于列表首部。
变量 kill-ring-yank-pointer 指向剪切环列表中的一个链,其 CAR
即为下一次要粘贴的文本。我们称其标识了环的首部。将 kill-ring-yank-pointer
移动到其他链称为旋转剪切环(rotating the kill ring)。将剪切环称为 “环(ring)”,是因为移动粘贴指针的函数
会在列表首尾之间循环。剪切环的旋转是虚拟的,不会改变 kill-ring 的值。
kill-ring 与 kill-ring-yank-pointer 均为 Lisp 变量,
其值通常为列表。kill-ring-yank-pointer 名称中的 “指针(pointer)” 一词表明,
该变量的作用是标识列表中供下一次粘贴命令使用的元素。
kill-ring-yank-pointer 的值始终与剪切环列表中的某条链 eq 等价。
它所指向的元素即为该链的 CAR。修改剪切环的剪切命令同时会将该变量
设为 kill-ring 的值,效果是旋转环使新剪切的文本位于首部。
下图展示了变量 kill-ring-yank-pointer 指向剪切环
("some text" "a different piece of text" "yet older text")
中第二个条目的状态。
kill-ring ---- kill-ring-yank-pointer
| |
| v
| --- --- --- --- --- ---
--> | | |------> | | |--> | | |--> nil
--- --- --- --- --- ---
| | |
| | |
| | -->"yet older text"
| |
| --> "a different piece of text"
|
--> "some text"
这种状态通常出现在执行 C-y(yank)后紧接着执行 M-y(yank-pop)时。
该变量保存剪切文本序列列表,最新剪切内容在前。
该变量的值指明剪切环中哪一个元素作为粘贴操作的首部。更精确地说,
其值是 kill-ring 值的一个尾部,其 CAR 即为 C-y
应当粘贴的剪切字符串。
该变量的值为剪切环可增长的最大长度,超出后会从末尾丢弃元素。
kill-ring-max 的默认值为 120。