12.5 回顾

这里简要汇总一些近期介绍的函数。

while

只要表达式主体的第一个元素测试为真,就重复执行主体内容。执行完毕后返回 nil。(该表达式仅为产生副作用而执行。)

例如:

(let ((foo 2))
  (while (> foo 0)
    (insert (format "foo is %d.\n" foo))
    (setq foo (1- foo))))

     ⇒      foo is 2.
             foo is 1.
             nil

insert 函数将其参数插入到当前光标位置;format 函数根据参数格式化并返回字符串,方式与 message 类似;\n 表示换行。)

re-search-forward

搜索指定模式,若找到则将光标移动到匹配内容的紧后方。

search-forward 类似,接受四个参数:

  1. 指定待搜索模式的正则表达式。(切记为该参数加上引号!)
  2. 可选,搜索的边界位置。
  3. 可选,搜索失败时的行为:返回 nil 或抛出错误信息。
  4. 可选,搜索重复次数;若为负数,则反向搜索。
let*

将若干变量局部绑定到指定值,随后执行剩余参数并返回最后一个表达式的值。绑定局部变量时,可使用此前已绑定变量的局部值。

例如:

(let* ((foo 7)
       (bar (* 3 foo)))
  (message "`bar' is %d." bar))
     ⇒ ‘bar’ is 21.
match-beginning

返回上一次正则表达式搜索所匹配文本的起始位置。

looking-at

若光标后的文本与参数(正则表达式)匹配,则返回 t 表示真。

eobp

若光标位于缓冲区可访问部分的末尾,则返回 t 表示真。若缓冲区未进行窄化,可访问部分的末尾即为缓冲区末尾;若已窄化,则为窄化范围的末尾。