vim 查找时忽略大小写
默认情况下 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
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/vim-ignorecase/2329.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.