基于vim中的正则表达式在同一行中进行多次替换

时间:2013-12-08 06:47:08

标签: c regex vim printf

更改"write" to "fprintf" AND(第二个逗号)","..."strlen"...")" to ""正则表达式是什么?

例如,

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 / write(/ fprintf(/ gc |%s /,\ s * strlen((。*))/)/ gc

|两个单独的搜索和替换在同一命令中 \ s *表示写入的第二个和第三个参数之间的空白量不确定

2 个答案:

答案 0 :(得分:1)

这就是我要做的事情:

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

答案 1 :(得分:0)

这是一个建议,对于一个表达式,只有当它出现在strlen内时才会替换write并调用与你在此处写的相同的字符串:

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