vim 的表达式计算可以与缓冲区中的现有表达式一起使用吗?

mer*_*011 3 vim expression

在 中vim,我们可以在插入或命令模式下进行快速计算,方法是键入<C-r>=后跟表达式(例如1.1+2.2, ),将结果放入缓冲区。

如果我在当前缓冲区中有一个现有的表达式,例如25.22 + 14.55,有没有办法让 vim 计算该表达式,并将其替换为结果?

我主要对不使用外部工具的解决方案感兴趣,例如bc.

更新:更明确地说,这是我在评估之前和之后在缓冲区中想要的内容。

输入示例:

25.22 + 14.55 
Run Code Online (Sandbox Code Playgroud)

示例输出:

39.77
Run Code Online (Sandbox Code Playgroud)

FDi*_*off 5

根据您用来eval()评估表达式的文档。

register                                                expr-register @r
--------        
...
When using the '=' register you get the expression itself, not what it
evaluates to.  Use eval() to evaluate it.
Run Code Online (Sandbox Code Playgroud)

要将当前行传递给eval()您可以使用以下命令。

:s/.*/\=eval(submatch(0))
Run Code Online (Sandbox Code Playgroud)

它将表达式替换为对其运行 eval 的结果。

看一眼:h sub-replace-expression