如何使用Vim正则表达式将func1的整数参数替换为对应包装函数调用
正确Vim替换命令
你之前的写法主要有三个问题:
- 没有匹配
func1(前缀,可能误修改其他函数的三参数调用 - Vim默认正则模式下,捕获组需要用
\(和\)转义,直接写()只会匹配括号字符本身 [1-9]*只能匹配非0开头的数字,而且*会匹配空字符,无法覆盖所有整数场景,也不能匹配num1这类变量名
场景1:参数是整数字面量(比如123、0、456)
执行以下命令即可:
:%s/func1(\(\d\+\),\s*\(\d\+\),\s*\(\d\+\))/func1(foo(\1), bar(\2), foobar(\3))/g
场景2:参数是num1这类变量名
执行以下命令即可:
:%s/func1(\(\w\+\),\s*\(\w\+\),\s*\(\w\+\))/func1(foo(\1), bar(\2), foobar(\3))/g
可选优化
如果担心误改,可以在命令末尾加c参数开启替换确认,Vim会每次替换前询问你是否执行:
:%s/func1(\(\w\+\),\s*\(\w\+\),\s*\(\w\+\))/func1(foo(\1), bar(\2), foobar(\3))/gc
内容的提问来源于stack exchange,提问作者VanTheMan
相关产品推荐
相关产品推荐

