2013-09-09 3 views
0

В vimscript мне нужно удалить строки из буфера, но количество строк будет варьироваться в зависимости от каждой итерации цикла. : d - единственная команда, которую я знаю, которая удалит целые строки, но как я могу использовать ее с переменной, указывающей количество строк, которые нужно удалить?Как удалить переменное число строк

+1

примеры пожалуйста. ваше описание проблемы слишком абстрактно. какой цикл? какая итерация? – Kent

ответ

0

не могли бы сделать это непосредственно, но достичь желаемого результата путем установки меток и удаление между метками, например, так:

:normal ma 
:call cursor(lno, 1) 
:normal mb 
:'a,'bd 
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 до конца файла (для иллюстрации со ссылкой на конец файла ярлыка)

Смежные вопросы