2013-12-08 55 views
0

什麼是正則表達式要更改"write" to "fprintf" AND(第二個逗號)","..."strlen"...")" to ""在vim中基於正則表達式的同一行中的多個替換

例如,

write(fd_global,"Currently inside of main after the arguments are parsed\n", strlen("Currently inside of main after the arguments are parsed\n")); 

fprintf(fd_global, "Currently inside of main after the arguments are parsed\n"); 

我知道"/write.*strlen"比賽用"write"..."strlen"每一行,但僅此而已。

在此先感謝!

我的回答 :%s /寫(/ fprintf中(/ GC |%S/\ S * strlen的((*))/)/ GC

|兩個單獨的搜索和替換在相同的命令 \ S *寫的第二個和第三個參數之間的空白的不確定量

+1

你提的問題是非常難以理解的 - 嘗試用反引號'\'包裝的碼位'來區分它來自你的問題的文本。 (或閱讀更多關於[格式](http://stackoverflow.com/help/formatting)) – brandonscript

回答

1

這是我會做:

%s/\v^write\((.*), strlen.*/fprintf(\1);/g 
0

這裏有一個建議,爲將取代表達只有當它發生時裏面write和你在這裏寫它相同的字符串調用:

%s/write(\([^,]*\),\("[^"]*"\), strlen(\2))/fprintf(\1, \2)/gc