kill-ring-yank-pointer
kill-ring-yank-pointer
是一个变量,就像 kill-ring
一样是一个变量。它通过绑定到它所指向的值来指向某个东西,就像任何其他 Lisp 变量一样。
因此,如果 kill 环的值为:
("一些文本" "另一段文本" "更多文本")
而 kill-ring-yank-pointer
指向第二个元素,那么 kill-ring-yank-pointer
的值就是:
("另一段文本" "更多文本")
如前一章节所解释的(see 如何实现列表),计算机并不保留被 kill-ring
和 kill-ring-yank-pointer
指向的文本的两个不同副本。"另一段文本"和"更多文本"这两个词不会被复制。相反,这两个 Lisp 变量指向相同的文本片段。以下是一个图示:
kill-ring kill-ring-yank-pointer | | | ___ ___ | ___ ___ ___ ___ ---> | | | --> | | | | | | |___|___|----> |___|___|--> |___|___|--> nil | | | | | | | | --> "更多文本" | | | --> "另一段文本" | --> "一些文本"
变量 kill-ring
和变量 kill-ring-yank-pointer
都是指针。但是 kill 环本身通常被描述成它实际由什么组成。kill-ring
通常被视为保存最近从 Emacs 缓冲区中剪切的信息的完整数据结构。另一方面,kill-ring-yank-pointer
用于指示——即指向——kill 环的哪一部分将被插入。