20.8 Searching and Case
Incremental searches in Emacs normally ignore the case of the text
they are searching through, if you specify the text in lower case.
Thus, if you specify searching for ‘foo’, then ‘Foo’ and
‘foo’ are also considered a match. Regexps, and in particular
character sets, are included: ‘[ab]’ would match ‘a’ or
‘A’ or ‘b’ or ‘B’.
An upper-case letter anywhere in the incremental search string makes
the search case-sensitive. Thus, searching for ‘Foo’ does not find
‘foo’ or ‘FOO’. This applies to regular expression search as
well as to string search. The effect ceases if you delete the
upper-case letter from the search string.
Typing M-c within an incremental search toggles the case
sensitivity of that search. The effect does not extend beyond the
current incremental search to the next one, but it does override the
effect of including an upper-case letter in the current search.
If you set the variable case-fold-search
to nil
, then
all letters must match exactly, including case. This is a per-buffer
variable; altering the variable affects only the current buffer, but
there is a default value in default-case-fold-search
that you
can also set. See Locals. This variable applies to nonincremental
searches also, including those performed by the replace commands
(see Replace) and the minibuffer history matching commands
(see Minibuffer History).
Several related variables control case-sensitivity of searching and
matching for specific commands or activities. For instance,
tags-case-fold-search
controls case sensitivity for
find-tag
. To find these variables, do M-x
apropos-variable <RET> case-fold-search <RET>.