gpt4 book ai didi

vi - 如何在 vimscript 中将范围扩展为列表?

转载 作者:行者123 更新时间:2023-12-04 17:55:55 27 4
gpt4 key购买 nike

我想自动采用视觉上选择的文本块,例如51-100 ,并将其扩展为 51,52,53,...,99,100 .

有没有一种简单的方法可以在 vimscript 中做到这一点?

最佳答案

让我提出以下实现方案。

vnoremap <silent> <leader># :<c-u>call ExpandRange()<cr>
function! ExpandRange()
norm! gvy
let n = matchlist(@", '\(\d\+\)\s*-\s*\(\d\+\)')[1:2]
if len(n) != 2 || +n[0] > +n[1]
return
end
exe 'norm! gvc' . join(range(n[0], n[1]), ',')
endfunction

如果范围表示法保证周围没有空格
数字, ExpandRange()的第二个语句可以通过使用简化 split()功能,
    let n = split(@", '-')

请注意,表示范围的文本被放入未命名的寄存器中。如果它
最好保持寄存器不变,修改 ExpandRange()保存
它事先的状态并在之后恢复它。
function! ExpandRange()
let [qr, qt] = [getreg('"'), getregtype('"')]
norm! gvy
let n = matchlist(@", '\(\d\+\)\s*-\s*\(\d\+\)')[1:2]
call setreg('"', qr, qt)
if len(n) != 2 || +n[0] > +n[1]
return
end
exe 'norm! gv"_c' . join(range(n[0], n[1]), ',')
endfunction

关于vi - 如何在 vimscript 中将范围扩展为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com