gpt4 book ai didi

vim - 在 Vim 中搜索和替换多行模式

转载 作者:行者123 更新时间:2023-12-04 00:09:15 25 4
gpt4 key购买 nike

我有一个类似的功能

myFunction (
myStruct_1_Ptr *var1, /* commenty */
myStruct_2_Ptr *var2, /* commenty */
myStruct_3_Ptr *var3, /* commenty */
int info1,
int info2,
int info3,
int info4
)

比我将所有这些信息移动到一个包装结构中,我想让它看起来像

myFunction (
myStruct_1_Ptr *var1, /* commenty */
myStruct_2_Ptr *var2, /* commenty */
myStruct_3_Ptr *var3, /* commenty */
myStruct_4_Ptr *var4 /* This is where all infos went in */
)

函数调用的语法类似,只是去掉前面的语法。

myFunction (
var1, /* commenty */
var2, /* commenty */
var3, /* commenty */
var4 /* This is where all infos went in */
);

如何使用搜索和替换(或其他任何方法)来做到这一点?我在这里只写了只存在于两个地方的声明部分——在相应的 .c.h 文件中,但我想对所有地方都做同样的事情我调用该函数。赋予函数的变量名称都是相同的。

S&R 的另一种方法可能是在跨多个文件的函数的所有实例上执行宏,但我不确定该怎么做。

最佳答案

如果它是一个没有嵌套括号的简单函数调用,那么您可以使用替换命令来执行此操作,如下所示:

:%s/\(myFunction\_s*(\(\_[^,]*,\)\{3}.*\_s*\)\_[^)]*/\1var4\r/

然后您可以使用 :bufdo 在所有打开的缓冲区中执行此操作,但这是非常具体的,并且有大量关于没有嵌套括号的警告,没有逗号是注释,我敢肯定有很多其他无法正常工作的情况。

关键是 \_ 扩展字符类和 . 以匹配换行符。

关于vim - 在 Vim 中搜索和替换多行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10104643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com