2.4.3.1 基本字符语法
字符本质上是整数,其打印表示是十进制数字。通常十进制数字也可以作为字符的打印输入,不过这么写容易和整数混淆。因此你应该使用Emacs Lisp提供的特定字符读取语法。这些读取语法以一个问号开头。
某个字母字符的读取语法通常是问号加上该字符;因此,‘?A‘为字符'A'的表示语法,'?B'为字符'B'的表示语法,'?a'为字符'a'的表示语法。
例如
标点符号字符通常有类似的读取语法。不过若该标点在Lisp中有特殊语法意义,那么你需要用反斜杠'\'将其转义。例如,'?\('为开括号字符的读取语法。类似的,如果你想让Lisp读取字符'\',那么你需要这么写'?\\'。
你可以使用'?\a','?\b','?\t','?\n','?\v','?\f','?\s','?\r','?\d','?\e'分别表示control-g、删除符、制表符、换行符、垂直制表符、换页符、空格、回车、删除、ESC。例如:
这类由反斜杠开头的序列也称为转义序列,其中开头的反斜杠起到转译的作用;这里的转义和ESC字符没啥联系(英文中两种都写作Escape)。'\s'通常在字符常量中使用,在字符串常量中,直接敲空格就行。
反斜杠对于不需要转译的字符是无害的,被允许使用的。因此'?\+'和'?+'是等价的。绝大多数的字符前都不要使用反斜杠。但是你必须在字符'()[]\;"'以及'|'`#.,'前加上反斜杠,以防歧义。你必须在前文提到的 Unicode 字符前加上反斜杠,以防止误导阅读你代码的人。Emacs本身会将未转译的,容易引起混淆的字符高亮,以提醒你添加反斜杠。你同样可以在诸如空格、制表符、换行符、换页符前添加反斜杠转译,但通常使用上述的语法会让代码更容易阅读。
最后更新于
这有帮助吗?