vim的正規表示式(二)應用例項

weixin_34292959發表於2013-09-05


 


本文出自   http://blog.csdn.net/shuangde800

------------------------------------------------------------------------------------------------


本文的例子都是實踐過的,如有錯誤,請指正 

本文約定:
$ + 命令 表示在普通的bash的命令列下
:  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 進入

 

 


 




修改檔案中路徑名列表

:s/\/home\/tim/\/home\/linda/g  把/home/tim改為/home/linda
上面不太好看,可以使用不同的字元作為模式分割符(可以使用除反斜杆,雙引號和豎直線(\、"和|) 之外的任何非字母表、非空白字元作為分隔符):
:s :/home/tim:/home/linda : g
這樣可讀性更加強,也不容易出錯



把HTML斜字型程式碼標籤(<I><I>)放到單詞hello world!的周圍

:%s/hello world!/<I>&<I>/g



把所有單詞help或Help都改為大寫的HELP

:%s/[Hh]elp/HELP/g
或者
:%s/[Hh]elp/\U&/g



使用單個空格替換一個或多個空格

:%s/  */ /g
 


使用兩個空格替換冒號或逗號後面的一個或多個空格

:%s/\([,:]\)  */\1  /g
先把冒號或逗號儲存到緩衝區中,然後匹配冒號或逗號加上一個或多個空格的模式,再把這個模式替換成緩衝區的逗號或冒號,以及加上一個空格


刪除所有空行(沒有任何字元,除了一個回車符)

:g/^$/d



刪除所有空行或者任何只包行空白的行

:g/^[ tab]*[ tab]*$/d

tab代表製表符



刪除每行的所有的前導空格

:%s/^  *//g
或者
:%s/^  *\(.*\)/\1/



刪除每行尾部的所有空格

:%s/  *$//
 


在檔案中的每一行的開始插入 ->(或者其它字元)

:%s/^/->/
或者
:%s/^\(.*\)/->\1/
單獨一個^,可以看作是指向一行的最左邊的游標,替換一個字串就相當於在游標處插入字串


在每一行的尾部加上一個句號

:%s/$/。/
或者
:%s/\(.*\)/\1。/

同樣, 單獨一個$,可以看作是指向一行的最右邊的游標,替換一個字串就相當於在游標處插入字串



交換列表中所有連字元分隔的條目的順序

例如一個檔案的內容是:
ABC : XYZ
haha : hehe
Alice : Bob
把冒號兩邊的字串交換,只要下面的命令
:%s/\(.*\) : \(.*\)/\2 : \1/


顛倒檔案中的行序

例如,一個檔案內容是
1
2
3
要改為:
3
2
1

命令如下:
:g/.*/ m 0
或者
:g/^/ m 0





 

 

 

相關文章