VIM中替换数字

工作中从数据库中导出了一些insert语句:
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
values (2163, 1, 'ID', '主键', 1, 'S', 4, 0, 0, 1, 1, 0, null, null, null, null, 1, null);
现在想改变第一列的值, 在vim中如下实现:
:let n=0 | g/valuse (\zs\d\+/s//\=n/|let n+=1
解释如下:
let 为变量赋值 (:help let )
| 用来分隔不同的命令 (:help :bar )
g 在匹配后面模式的行中执行指定的ex命令 (:help :g )
\zs 指明匹配由此开始 (:help /\zs )
\d\+ 查找1个或多个数字 (:help /\d )
s 对匹配模式进行替换 (:help :s )
\= 指明后面是一个表达式 (:help :s\= )
也可以用另外一种方式,要先选中,通过行号进行替换 , 不如上面的方式灵活:
:'<,'>s/values (\zs\d*\ze/\=line(".") - line("'<") + 1

'<,'> 我们所选中的区域 (:help '<,:help '> )
s 在选中的区域中进行替换 (:help :s )
\zs 指明匹配由此开始 (:help /\zs )
\d* 查找任意位数的数字 (:help /\d )
\ze 指明匹配到此为止 (:help /\ze )
\= 指明后面是一个表达式 (:help :s\= )
line(".") 当前光标所在行的行号 (:help line() )
line("'<") 我们所选区域中第一行的行号 (:help line() )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值