如何将光标下的值乘以或除以重复计数?

时间:2016-08-11 14:46:25

标签: vim

我知道可以使用<repeat-count><ctrl>-a<repeat-count><ctrl>-x命令通过重复计数递增/递减整数。

现在我想知道是否有类似的乘法和除法命令。如果没有这样的命令,我怎么能在我自己的.vimrc中实现呢?

1 个答案:

答案 0 :(得分:1)

这是一次快速而肮脏的尝试:

function! Multiply()
    " save count
    let cnt        = v:count1

    " save register v
    let old_reg    = getreg("v")

    " select the number under the cursor
    call search('\d\([^0-9\.]\|$\)', 'cW')
    normal v
    call search('\(^\|[^0-9\.]\d\)', 'becW')

    " yank it into register v then reselect
    normal "vygv

    " change the selection with the yanked number multiplied by the count
    execute "normal c" . @v * cnt

    " restore register v
    call setreg("v", old_reg)
endfunction

nnoremap <F5> :<C-u>call Multiply()<CR>

现在,按5<F5>将光标下的数字乘以5

如果你想在没有映射/功能的情况下这样做:

v{motion}c<C-r>=<C-r>"*5<CR><Esc>