当文本从缓冲区中剪切出来时,它被存储在一个列表中。连续的文本片段被依次存储在列表中,因此列表可能看起来像这样:
("一段文本" "之前的片段")
函数cons
可用于从文本片段(称为“原子”)和现有列表创建一个新列表,如下所示:
(cons "另一段" '("一段文本" "之前的片段"))
如果您评估此表达式,一个包含三个元素的列表将显示在回显区:
("另一段" "一段文本" "之前的片段")
使用car
和nthcdr
函数,您可以检索您想要的任何文本片段。例如,在以下代码中,nthcdr 1 …
返回删除第一个项目的列表;而car
返回该剩余部分的第一个元素—原始列表的第二个元素:
(car (nthcdr 1 '("另一段" "一段文本" "之前的片段"))) ⇒ "一段文本"
实际的Emacs函数当然比这更复杂。剪切和检索文本的代码必须被编写,以便Emacs可以弄清楚您想要列表中的哪个元素—第一个、第二个、第三个等。此外,当到达列表的末尾时,Emacs应该给您列表的第一个元素,而不是什么都不给您。
保存文本片段的列表称为kill环。本章首先描述了kill环,以及首先追踪zap-to-char
函数的工作方式。此函数调用一个调用函数,该函数操纵kill环。因此,在到达山脚之前,我们要先爬过丘陵。
后续章节描述了从缓冲区剪切的文本如何被检索。See 检索文本.