这里简要总结一下最近介绍的一些函数。
carcdrcar 返回列表的第一个元素;cdr 返回列表中第二个及后续所有元素。
例如:
(car '(1 2 3 4 5 6 7))
⇒ 1
(cdr '(1 2 3 4 5 6 7))
⇒ (2 3 4 5 6 7)
conscons 通过将第一个参数添加到第二个参数头部来构造一个新列表。
例如:
(cons 1 '(2 3 4))
⇒ (1 2 3 4)
funcallfuncall 将第一个参数当作函数执行,并把后续参数传递给该函数。
nthcdr对一个列表连续取 n 次 CDR 后返回结果, 可以理解为 “剩余的剩余(rest of the rest)”。
例如:
(nthcdr 3 '(1 2 3 4 5 6 7))
⇒ (4 5 6 7)
setcarsetcdrsetcar 修改列表的第一个元素;setcdr 修改列表的第二个及后续元素。
例如:
(setq triple (list 1 2 3))
(setcar triple '37)
triple
⇒ (37 2 3)
(setcdr triple '("foo" "bar"))
triple
⇒ (37 "foo" "bar")
progn依次执行所有参数,并返回最后一个表达式的值。
例如:
(progn 1 2 3 4)
⇒ 4
save-restriction记录当前缓冲区中生效的缩进/缩窄范围,执行完参数后恢复该范围。
search-forward搜索指定字符串,找到后移动光标。若使用正则表达式,可使用类似的 re-search-forward。
(See Regular Expression Searches, 了解正则表达式模式与搜索。)
search-forward 和 re-search-forward 接收四个参数:
nil 或抛出错误。
kill-regiondelete-and-extract-regioncopy-region-as-killkill-region 剪切光标与标记之间的文本,存入删除环,
之后可以通过取回命令恢复。
copy-region-as-kill 复制光标与标记之间的文本到删除环,
但不会从缓冲区中删除文本。
delete-and-extract-region 移除光标与标记之间的文本并直接丢弃,
无法恢复。(该函数不是交互式命令。)