You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Vim正则表达式将func1的整数参数替换为对应包装函数调用

正确Vim替换命令

你之前的写法主要有三个问题:

  1. 没有匹配func1(前缀,可能误修改其他函数的三参数调用
  2. Vim默认正则模式下,捕获组需要用\(和\)转义,直接写()只会匹配括号字符本身
  3. [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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:00:02