Vim中修改列模式的文字为ABCD或1234的递增序号

vimrc里添加xnoremap <F4> :<C-u>call hy_string#modify#VisualCharsIncrease()<cr>

 

xnoremap <F4> :<C-u>call hy_string#modify#VisualCharsIncrease()<cr>

"递增列模式下的字符
function! hy_string#modify#VisualCharsIncrease() abort
    let c = col('.')
    let l = line('.')
    let char0 = strcharpart(strpart(getline('.'),col('.')-1), 0, 1)
    for k in range(1, line("'>")-line("'<")) "从第2行开始
        let str_before = strpart(getline(l+k), 0, c-1)
        let str_after = strpart(getline(l+k), c)
        if char0 =~ '\d'
            let char1 = char0 + k
        else
            let char1 = nr2char(char2nr(char0)+k)
        endif
        call setline(l+k, str_before . char1 . str_after)
    endfor
endfunction

 

列选中A,按F3,就可以变成右边的样子

如果是1,则数字递增

友情提醒:字母若超过Z会出现ASCⅡ码后面的字符

补充:vim的 g ctrl_a 就可以实现数字按序号加1(原理是第1个数字加1,第2个数字加2,所以原数字相同的话,就会变成依次+1的序号)

posted @ 2017-04-03 20:53  火冷  阅读(1364)  评论(0编辑  收藏  举报