VIM字元匹配交換

2021-08-13 09:04:19 字數 1566 閱讀 8711

vim中可以通過模式匹配實現複雜的字元匹配和替換,《learning the vi and vim editors》書中稱之為pattern-matching。例如使用\(\)緩衝區模式可以實現不同緩衝區hold buffer之間交替,在vim中最多可支援9個hold buffer1。

例1:將me and you字串替換為you and me,可以使用如下命令:

c1

:%s/\(me\) and \(you\)/\2

and \1/gc

例1中命令 c1 將字串me and you切割成12兩部分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可以視為替換模式。可以理解為首先查詢匹配到兩個緩衝塊12,然後根據替換模式拼接字串。命令 c3 就是將兩個緩衝塊12直接拼接到and兩側,因此得到的結果是:youandme\(\)模式詳細理解可以看下述例2c3

:%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 設定好之後檔案正常顯示 在網頁中顯示 但當我再次開啟此檔案的時候,又出現了開啟之後亂碼的問題。解決方...