2.4.3.3 控制字符语法

控制字符可以使用另一种读取语法来表示。它由问号、反斜杠、脱字符 ‘^’ 以及对应的非控制字符组成,字母大小写均可。例如,‘?\^I’ 和 ‘?\^i’ 都是字符 C-i(值为 9)的合法读取语法。

你也可以用 ‘C-’ 代替 ‘^’,因此 ‘?\C-i’ 等价于 ‘?\^I’ 和 ‘?\^i’:

?\^I ⇒ 9     ?\C-I ⇒ 9

在字符串和缓冲区中,只允许使用 ASCII 中存在的控制字符;但在键盘输入场景下,你可以通过 ‘C-’ 将任意字符变成控制字符。这类非-ASCII 控制字符的编码,会在对应非控制字符编码的基础上,加上 2**26 这一位。并非所有文本终端都能生成非-ASCII 控制字符,但在 X 窗口系统及其他窗口系统下可以很方便地生成。

由于历史原因,Emacs 将 DEL 字符视为 ? 的控制等价字符:

?\^? ⇒ 127     ?\C-? ⇒ 127

因此,目前无法通过 ‘\C-’ 来表示 Control-? 这个在 X 窗口系统下有实际意义的输入字符。想要修改这一点并不容易,因为很多 Lisp 文件都以这种方式引用 DEL

对于表示文件或字符串中的控制字符,我们推荐使用 ‘^’ 语法;对于键盘输入中的控制字符,更推荐使用 ‘C-’ 语法。使用哪种写法不会影响程序含义,但会帮助阅读代码的人更好地理解意图。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike