ignorecase
和 smartcase
是 vim 里的选项(options),经常用在字符串搜索中,目的是改变搜索模式的大小写敏感性。它们设置的是vim 的全局设置,对 vim 里发生的所有搜索都生效。与它们有相同作用的还有 \c
、\C
, 这两个设置每次查找时的大小写敏感性。详细的文档可以通过在 vim 里执行 :help 'ignorecase'
、:help 'smartcase'
、:help \c
查看。
下面是文档里的一个示例:
pattern | 'ignorecase' | 'smartcase' | matches |
---|---|---|---|
foo | off | - | foo |
foo | on | - | foo Foo FOO |
Foo | on | off | foo Foo FOO |
Foo | on | on | Foo |
\cfoo | - | - | foo Foo FOO |
foo\C | - | - | fooin |
默认情况下,vim 会严格区分搜索模式的大小写,使用 ignorecase
选项,正则表达式引擎忽略搜索模式的大小写。而 smartcase 选项顾名思义,就是智能的判断要不要区分搜索模式大小写。那它到底智能在哪里?它只能在 ignorecase
开启的时候使用,目的是在忽略大小写的大局下,根据搜索模式,动态地抑制 ignorecase
的功能,使大小写策略恢复到默认的区分大小写的搜索。
在忽略大小写的搜索下,搜索模式使用大写还是小写已经无关紧要,而输入全小写 的搜索模式更加简单。在这种情况下,如果搜索模式中出现了大写字符,smartcase
会判断用户想使用区分大小写的搜索。
\c
、\C
用在某一条具体的搜索中,根据就近原则
,越靠近操作对象,越具体的配置优先级越高,所以\c
、\C
的优先级比 ignorecase
和 smartcase
高。