Подтвердить что ты не робот

Передача командного диапазона функции

Я пытаюсь определить команду, которая может принять диапазон и передать его функции. Это то, что я думал, что должен:

function! PrintGivenRange() range
    echo "firstline ".a:firstline." lastline ".a:lastline
    " Do some more things
endfunction

command! -range PassRange call PrintGivenRange()

Однако это не работает, кажется, что он проходит только первую строку.

например.

:1,5PassRange "outputs firstline 1 lastline 1
:1,5call PrintGivenRange() "outputs firstline 1 lastline 5
" if you select lines in visual mode, same thing for both

Я уже читал :help command-range, но до сих пор не смог понять это. Должен ли я передавать диапазон в префиксе на call? Как это исправить?

4b9b3361

Ответ 1

Вам нужно явно передать диапазон, попробуйте с помощью:

command! -range PassRange <line1>,<line2>call PrintGivenRange()