本文轉自:http://www.361way.com/page/30
預設情況下 vim 的查找都是區分大小寫的, 這種查找方式有利于準确快速的定位到目标, 但是有時候vim的使用者也不一定能夠确認那個單詞的大小寫情況, 這種情況下就要用到大小寫忽略了.
實作這個操作有兩種方式.
方式1 指令設定:
:set ic(ignorecase 的縮寫)忽略大小寫:set noic(noignorecase 的縮寫)不忽略大小寫
輸入了上述指令, 當每次的查找操作都會受到目前設定的影響,不過每次在退出vim編輯後,再重新打開以後的設定仍舊失效。
注:編輯狀态下的設定相當于臨時修改了vim的環境變量,當重新使用vim時,其又會預設的.viminfo檔案中讀入預設的環境變量設定 。
方式2 查找符号設定:
/\CWord 區分大小寫的查找/\cword 不區分大小寫的查找
這個操作針對目前的查找有效, 是以不必考慮下次查找操作是否會受到影響.
對grep sed awk工具忽略大小寫的擴充
談到vim對文本的處理,不自覺的就聯想到以上三個工具對文本的處理。現對此做下對比。首先是grep對忽略大小寫的處理,這個最簡單,直接在-i參數即可:
-i,--ignore-case ignore case distinctions
接下來是sed對文本忽略大小寫的處理。這個要稍微麻煩些。不過在sed的幫助文檔中還是找到下面一段:
I Match REGEXP in a case-insensitive manner.(This is a GNU extension.)
從上面這段幫助上不難看出,使用大寫I可以進行大小寫忽略處理。下面使用兩個簡單的示例說明下。如我有如下一個文檔:
[root@gateway2 ~]# cat a.txtAAaabbcc
然後通過sed可進行如下處理
[root@gateway2 ~]# sed -n '/aa/Ip' a.txtAAaa//d參數為删除[root@gateway2 ~]# sed -e '/aa/Id' a.txtbbcc
最後是awk對忽略大小寫的處理。awk在這方面做的也比較好,其内置了一個IGNORECASE變量,專門用于處理大小寫的忽略。當IGNORECASE的值為真時,則進行忽略大寫的比對。示例如下:
[root@gateway2 ~]# cat a.txt |awk '/aa/' IGNORECASE=1AAaa本處仍使用的上面的a.txt
echo "Mary"| awk 'BEGIN{IGNORECASE=1}{if($0=="mary"){print $0}}'