默认情况下 vim 的查找都是区分大小写的, 这种查找方式有利于准确快速的定位到目标, 但是有时候vim的使用者也不一定能够确认那个单词的大小写情况, 这种情况下就要用到大小写忽略了.
实现这个操作有两种方式.

方式1 指令设定:

1:set ic(ignorecase 的缩写) 忽略大小写
2:set noic(noignorecase 的缩写) 不忽略大小写 

输入了上述指令, 当每次的查找操作都会受到当前设定的影响,不过每次在退出vim编辑后,再重新打开以后的设置仍旧失效。

注:编辑状态下的设置相当于临时修改了vim的环境变量,当重新使用vim时,其又会默认的.viminfo文件中读入默认的环境变量设置 。

方式2 查找符号设定:

1/\CWord 区分大小写的查找
2/\cword 不区分大小写的查找 

这个操作针对当前的查找有效, 所以不必考虑下次查找操作是否会受到影响.

对grep sed awk工具忽略大小写的扩展

谈到vim对文本的处理,不自觉的就联想到以上三个工具对文本的处理。现对此做下对比。首先是grep对忽略大小写的处理,这个最简单,直接在-i参数即可:

1-i, --ignore-case         ignore case distinctions

接下来是sed对文本忽略大小写的处理。这个要稍微麻烦些。不过在sed的帮助文档中还是找到下面一段:

1    I
2          Match REGEXP in a case-insensitive manner.
3          (This is a GNU extension.)

从上面这段帮助上不难看出,使用大写I可以进行大小写忽略处理。下面使用两个简单的示例说明下。如我有如下一个文档:

1[root@gateway2 ~]# cat a.txt
2AA
3aa
4bb
5cc

然后通过sed可进行如下处理

1[root@gateway2 ~]# sed -n '/aa/Ip' a.txt
2AA
3aa
4//d参数为删除
5[root@gateway2 ~]# sed -e '/aa/Id' a.txt
6bb
7cc

最后是awk对忽略大小写的处理。awk在这方面做的也比较好,其内置了一个IGNORECASE变量,专门用于处理大小写的忽略。当IGNORECASE的值为真时,则进行忽略大写的匹配。示例如下:

1[root@gateway2 ~]# cat a.txt |awk '/aa/' IGNORECASE=1
2AA
3aa
4本处仍使用的上面的a.txt

另一个示例:

1echo "Mary" | awk 'BEGIN{IGNORECASE=1}{if($0=="mary"){print $0}}'

该示例的输出结果是Mary