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

如何在Vi/Vim中为每行第2列的数字添加指定整数?

在Vim中仅修改每行第2列的数字并添加指定值

你的问题很典型——直接匹配所有数字的正则会把行内所有数字都改掉,我们需要精准定位到第2列的数字(也就是HEAD后面的那个数值)来修改。

解决方案:精准匹配目标数字的替换命令

直接在Vim命令模式下执行这条命令(这里以加5为例):

:%s/HEAD \zs\d\+/\=submatch(0)+5/

命令拆解(为什么这样写就对了):

  • :%s:表示对所有行执行替换操作
  • HEAD \zs\d\+:这部分是精准匹配目标数字的正则:
    • HEAD :先匹配行首的HEAD和后面的空格,确保我们定位到第1列之后的位置
    • \zs:Vim专属的正则标记,意思是“从这里开始算作匹配内容”——这样替换时只会修改\zs后面的部分,不会动前面的HEAD
    • \d\+:匹配1个或多个数字,也就是我们要修改的第2列数值
  • \=submatch(0)+5:替换规则,\=表示用表达式计算结果替换,submatch(0)就是我们刚才匹配到的数字,加上5之后作为新的数值

效果验证

拿你的示例行来说:

HEAD 100 ABC 12 24 12.5

执行命令后会变成:

HEAD 105 ABC 12 24 12.5

完全符合你的需求——只有第2列的数字被加了5,其他位置的数字丝毫不受影响。

扩展:如果要加其他数值?

只需要把命令里的+5改成你需要的数值就行,比如要加3就写成\=submatch(0)+3。

内容的提问来源于stack exchange,提问作者Huiwen wu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:23:51