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