vim 将匹配的数字累加 sum column

阅读更多

例子:

数学  30

语文  29

英语  89

 

现在要将三门课程分数加起来并打印出来,可执行以下命令

:let i=0

:g/^/let i+=str2nr(substitute(getline('.'),'.\+\(\d\+\).\+,'\1',''))

:echo i

 

如此就会得到总分,下面解释一下各命令

let i=0  是设置i变量并赋值0

str2nr是字符串转数字函数

substitute({source},{pattern},{replace},{flag}) 这是一个替换函数,使用 replace 去替换 source中pattern匹配的内容,并返回替换后的source。

getline({pattern}) 是返回查找到的内容所在行的整行内容,故getline('.') 查找的是所有行。

echo i 就跟shell 脚本是一样的意思,就是输出 i

你可能感兴趣的:(vi)