有谁知道如何在 Vim 中对表中的所有列求和,而不使用 AWK 或 SED,而是使用 vimscript?
我想选择要求和并具有以下值的列
像这样:
2,50 € 2,50
25 € 2.200,40
0,30 € 0,309
100 € 1.400,3
23,50 € 23,5
--------------------
Sum col1 Sum col2
这是一个有 2 列的示例,但我经常有更多列。
我使用 awk 时遇到的问题是它无法处理小数分隔符“,”和千位分隔符“.”
我建议查看 csv.vim 源代码,它在 ftplulgin 中有一个
SumColumn
函数 IIRC。
我非常需要这个,所以它需要变得更容易。
将以下内容添加到我的
.vimrc
,现在可以:
y
)<Leader>s
—将求和结果复制到*
寄存器*
寄存器可能不适用于您的vim版本,但您可以将其从let @* = ...
更改为let @" = ...
,或任何您想要将结果保存到的寄存器)。p
。function Sum()
let @* = system("awk '{total+=$1}END{print total}'", @")
endfunction
function Sub()
let @* = system("awk '{total-=$1}END{print total}'", @")
endfunction
nnoremap <silent> <Leader>s :call Sum()<CR>
nnoremap <silent> <Leader>x :call Sub()<CR>