如何删除可变数量的行

时间:2013-09-09 19:26:58

标签: variables vim buffer

在vimscript中我需要从缓冲区中删除行,但行数会随着循环的每次迭代而变化。 :d是我知道的唯一一个删除整行的命令,但是如何将它与一个指定要删除的行数的变量一起使用?

2 个答案:

答案 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