天天看點

【轉】vi查找替換指令詳解

文章轉自:http://blog.csdn.net/lanxinju/article/details/5731843

一、查找 

查找指令 

/pattern<Enter> :向下查找pattern比對字元串 

?pattern<Enter>:向上查找pattern比對字元串 

使用了查找指令之後,使用如下兩個鍵快速查找: 

n:按照同一方向繼續查找 

N:按照反方向查找 

字元串比對 

pattern是需要比對的字元串,例如:

  除此之外,pattern還可以使用一些特殊字元,包括(/、^、$、*、.),其中前三個這兩個是vi與vim通用的,“/”為轉義字元。

二、替換 

基本替換 

  可以使用 #或+ 作為分隔符,此時中間出現的 / 不會作為分隔符 

删除文本中的^M 

問題描述:對于換行,window下用回車換行(0A0D)來表示,linux下是回車(0A)來表示。這樣,将window上的檔案拷到unix上用時,總會有個^M,請寫個用在unix下的過濾windows檔案的換行符(0D)的shell或c程式。 

使用指令:cat filename1 | tr -d “^V^M” > newfile; 

使用指令:sed -e “s/^V^M//” filename > outputfilename 

需要注意的是在1、2兩種方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必須要手工進行輸入,而不是粘貼。 

在vi中處理:首先使用vi打開檔案,然後按ESC鍵,接着輸入指令:

如果上述方法無用,則正确的解決辦法是:

其它用法 

從上述替換指令可以看到: 

g 放在指令末尾,表示對指定行的搜尋字元串的每次出現進行替換;不加 g,表示隻對指定行的搜尋字元串的首次出現進行替換; 

g 放在指令開頭,表示對正文中所有包含搜尋字元串的行進行替換操作。 

也就是說指令的開始可以添加影響的行,如果為g表示對所有行;指令的結尾可以使用g來表示是否對每一行的所有字元串都有影響。 

三、簡單的vim正規表達式規則 

在vim中有四種表達式規則: 

magic(/m):除了$.*^之外其他元字元都要加反斜杠 

nomagic(/M):除了$^之外其他元字元都要加反斜杠 

/v(即 very magic 之意):任何元字元都不用加反斜杠 

/V(即 very nomagic 之意):任何元字元都必須加反斜杠 

vim預設使用magic設定,這個設定也可以在正規表達式中通過 /m /M /v /V開關臨時切換。例如:

推薦使用預設的magic設定,在這種情況下,常用的比對有:

關于正規表達式的詳細資訊,請參見參考文獻。

參考文獻: 

<a href="http://blog.csdn.net/aldenphy/archive/2009/03/24/4019486.aspx">vi替換字元串</a>

繼續閱讀