如何从VIM中字符串后面的数字中减去?

时间:2018-11-17 04:47:15

标签: vim

我试图从VIM中字符串后面的数字中减去,例如此(搜索到的)输入:

CustomModelData: 1

和我首选的(替换后的)输出:

CustomModelData: -2147483647

我要从数字中减去的数字是2147483648。我尝试在VIM中使用它,但是由于表达式中有一个字符串,所以它不起作用,我想保留该字符串,同时还要从中减去随后的数字:

:%s/CustomModelData: \d\+/\=/CustomModelData: submatch(0)-2147483648/g

2 个答案:

答案 0 :(得分:2)

您可以使用以下较小的调整使比赛从数字开始,这样替换者只会看到要调整的数字

%s/\vCustomModelData: \zs\d+/\=submatch(0)-2147483648/g

答案 1 :(得分:0)

如果每个数字都在文件的单独一行中,那么您可以匹配相关行并对其使用Ctrl + X减法运算符:

:g/CustomModelData:/ norm 2147483648^X

(对于^X,输入Ctrl + X。)