math - Vim 将一列数字乘以一系列数字

标签 math vim

我的文本文件中有一列数字,如下所示:

10  1  -0.93
11  1  -0.93
12  1  -0.93
13  1  -0.93
...

(第一列数字不是行号。)

我想通过将每个数字乘以 0.10.20.3 等来替换最后一列数字,这样结果是

10  1  -0.093
11  1  -0.186
12  1  -0.279
13  1  -0.372
...

我知道我可以使用 = 寄存器进行数学运算(这是正确的术语吗?),但我似乎不知道如何自动执行此操作。请指教。

最佳答案

假设0.1/0.2/...对应“行号/10”,可以使用

%s/\v(\S+)$/\=str2float(submatch(1)) * line('.') * 0.1

它捕获最后一列并使用
返回“value * line_number * 0.1”的结果 子替换表达式(有关详细信息,请参阅 :help sub-replace-expression)。


如果值不是从第 1 行开始,您可以使用视觉选择(设置 line("'<") )并使用 line('.') - line("'<") + 1知道你在街区的哪个位置。然后添加初始乘数(此处为 0.1):

'<,'>s/\v(\S+)$/\=str2float(submatch(1)) * (line('.') - line("'<") + 1) * 0.1

关于math - Vim 将一列数字乘以一系列数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68548475/

相关文章:

javascript - 如何在外旋转矩形的边界内夹住一个矩形

algorithm - 递归微分基本表达式

vim - 将所选 block 中的所有空格替换为下划线

linux - 编辑目录表的内容 (Linux)

vim - 为什么 ci` 跳到反引号中而 ci( 不跳到大括号中?

algorithm - 使用 4 个操作找到一对可以达到另一对的整数

c - 晶体管的C/数学模型

javascript - 在javascript中是否可以将算术操作数分配给变量?

vim 配置以打开 .conf 文件的语法

regex - Vim 提取/复制文件中的所有多行模式