Emacs 提供了许多用于查看光标周围字符的函数。本节介绍其中几个简单函数。另请参阅 正则表达式搜索 中的 looking-at。
以下四个函数中所指的缓冲区 “起始(beginning)” 或 “结尾(end)”,均为缓冲区可访问部分的起始或结尾。
该函数返回当前缓冲区中位置 position 处(即该位置紧后方)的字符。若 position 超出有效范围(位于缓冲区起始之前,或在结尾及之后),则返回值为 nil。position 的默认值为光标位置。
下例假设缓冲区第一个字符为 ‘@’:
(string (char-after 1))
⇒ "@"
该函数返回当前缓冲区中位置 position 紧前方的字符。若 position 超出有效范围(位于缓冲区起始及之前,或在结尾之后),则返回值为 nil。position 的默认值为光标位置。
该函数返回当前缓冲区中光标后方的字符。用法与 (char-after (point)) 类似。但当光标位于缓冲区结尾时,following-char 返回 0。
注意光标始终位于两个字符之间,屏幕光标通常显示在光标位置之后的字符上。因此,following-char 返回的字符即为屏幕光标所在位置的字符。
下例中,光标位于 ‘a’ 与 ‘c’ 之间:
---------- Buffer: foo ---------- Gentlemen may cry ``Pea∗ce! Peace!,'' but there is no peace. ---------- Buffer: foo ----------
(string (preceding-char))
⇒ "a"
(string (following-char))
⇒ "c"
该函数返回当前缓冲区中光标前方的字符。示例见上文 following-char 部分。若光标位于缓冲区起始,preceding-char 返回 0。
若光标位于行尾,该函数返回 t。缓冲区(或其可访问部分)的结尾始终视为行尾。