默认情况下,Emacs 中的搜索会忽略文本的大小写;如果你指定搜索 ‘FOO’,那么 ‘Foo’ 或 ‘foo’ 也会被视为匹配。这一规则同样适用于正则表达式;因此,‘[aB]’ 可以匹配 ‘a’、‘A’、‘b’ 或 ‘B’。
如果你不希望启用该功能,可以将变量 case-fold-search 设置为 nil。此时所有字母必须精确匹配,包括大小写。这是一个缓冲区局部变量;修改该变量仅影响当前缓冲区。(See 缓冲区局部变量简介。)你也可以修改其默认值。
在 Lisp 代码中,更常见的做法是使用 let 将 case-fold-search 绑定为所需的值。
注意,用户层面的增量搜索功能对大小写的处理方式不同。当搜索字符串仅包含小写字母时,搜索忽略大小写;但当搜索字符串包含一个或多个大写字母时,搜索则区分大小写。不过这与 Lisp 代码中使用的搜索函数无关。See Incremental Search in The GNU Emacs Manual。
该缓冲区局部变量决定搜索是否忽略大小写。如果变量为 nil,则区分大小写;否则(默认情况)忽略大小写。