在 中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)
根据您用来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