0

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

4

2 回答 2

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 行(以说明引用文件末尾的快捷方式)

于 2014-07-14T19:02:13.953 回答
0

不能直接做到这一点,但通过设置标记和标记之间的删除来达到预期的效果,如下所示:

:normal ma  
:call cursor(lno, 1)  
:normal mb  
:'a,'bd  
于 2013-09-09T23:43:32.197 回答