将文本存储在列表中

当文本从缓冲区中剪切出来时,它被存储在一个列表中。连续的文本片段被依次存储在列表中,因此列表可能看起来像这样:

("一段文本" "之前的片段")

函数cons可用于从文本片段(称为“原子”)和现有列表创建一个新列表,如下所示:

(cons "另一段"
      '("一段文本" "之前的片段"))

如果您评估此表达式,一个包含三个元素的列表将显示在回显区:

("另一段" "一段文本" "之前的片段")

使用carnthcdr函数,您可以检索您想要的任何文本片段。例如,在以下代码中,nthcdr 1 …返回删除第一个项目的列表;而car返回该剩余部分的第一个元素—原始列表的第二个元素:

(car (nthcdr 1 '("另一段"
                 "一段文本"
                 "之前的片段")))
     ⇒ "一段文本"

实际的Emacs函数当然比这更复杂。剪切和检索文本的代码必须被编写,以便Emacs可以弄清楚您想要列表中的哪个元素—第一个、第二个、第三个等。此外,当到达列表的末尾时,Emacs应该给您列表的第一个元素,而不是什么都不给您。

保存文本片段的列表称为kill环。本章首先描述了kill环,以及首先追踪zap-to-char函数的工作方式。此函数调用一个调用函数,该函数操纵kill环。因此,在到达山脚之前,我们要先爬过丘陵。

后续章节描述了从缓冲区剪切的文本如何被检索。See 检索文本.