vim
中可以通過模式匹配實現複雜的字元匹配和替換,《learning the vi and vim editors》
書中稱之為pattern-matching
。例如使用\(\)
緩衝區模式可以實現不同緩衝區hold buffer
之間交替,在vim中最多可支援9個hold buffer
1。
例1
:將me and you
字串替換為you and me
,可以使用如下命令:
c1
:%s/\(me\) and \(you\)/\2
and \1/gc
例1
中命令 c1 將字串me and you
切割成1
和2
兩部分hold buffer
,然後把兩塊hold buffer
索引位進行交換,實現字串交換。需要注意:and
與前後字串之間都有乙個空格符,如果在命令中將第乙個and
的前後空格符去掉,則無法匹配。這是因為空格符去掉後,字元沒法完成切成兩塊,換而言之就是無法匹配。如:
c2
:%s/(me)and(you)/\2
and \1/gc
c2 命令執行將會提示pattern not found:\(me\)and\(you\)
如果將 c1 命令中的第二個and
前後空格符去掉如命令 c3 ,執行後得到的字串將是youandme
。實際上命令 c1 大致可分為查詢匹配模式和替換模式:\(me\) and \(you\)
可視為查詢匹配模式,\2 and \1
可以視為替換模式。可以理解為首先查詢匹配到兩個緩衝塊1
和2
,然後根據替換模式拼接字串。命令 c3 就是將兩個緩衝塊1
和2
直接拼接到and
兩側,因此得到的結果是:youandme
。\(\)
模式詳細理解可以看下述例2
c3
:%s/(me) and (you)/\2
and \1/gc
例2
:把文中的所有字串「a..bc<——->xy….z」替換為「xy….z<——->a..bc」可以進行以下寫法2:
:%s/\(a.*bc\)\(<.*>\)\(xy.*z\)/\3\2\1/gc
以上表示式中可以拆開幾部分理解:
替換模式
gc
以詢 問確認方式進行全域性替換 參考
《learning the vi and vim editors》 ↩
vim查詢替換及正規表示式的使用
↩
vim的匹配刪除
vim的匹配刪除主要是在一些配置檔案中,刪除空行,注釋行 號開頭等 刪除含有特定字元的行等等。1.刪除含有 開頭的行 g d 匹配刪除含有特定字元的行就去掉 也可以匹配結尾 2.刪除空行 g d 3.刪除不含該字串的行 v pattern d 還有另一中方法 g pattern d 4.如何對每行只...
vim 括號等 自動匹配
寫入 etc vimrc inoremap i inoremap i inoremap o autocmd syntax html,vim inoremap i inoremap closepair inoremap closepair inoremap closepair inoremap clo...
vim字元編碼
setencoding utf 8 setfileencodings ucs bom,utf 8,cp936 setfileencoding gb2312 settermencoding utf 8 設定好之後檔案正常顯示 在網頁中顯示 但當我再次開啟此檔案的時候,又出現了開啟之後亂碼的問題。解決方...