在vimscript中我需要从缓冲区中删除行,但行数会随着循环的每次迭代而变化。 :d是我知道的唯一一个删除整行的命令,但是如何将它与一个指定要删除的行数的变量一起使用?
答案 0 :(得分:1)
我一直在寻找这个解决方案,最后使用exec
命令。
我使用silent!
,否则如果范围不存在,您将收到错误。
function! DeleteLines(lineFirst, lineLast)
silent! exec a:lineFirst . "," . a:lineLast ."d"
endfunction
使用该功能:
:call DeleteLines(5,10)
删除第5行到第10行;
:call DeleteLines(5,'$')
删除第5行到文件末尾(以说明引用文件快捷方式的结尾)
答案 1 :(得分:0)
无法直接执行,但通过在标记之间设置标记和删除来达到预期目的,如下所示:
:normal ma
:call cursor(lno, 1)
:normal mb
:'a,'bd