我正在尝试定义一个可以获取范围并将其传递给函数的命令。这就是我认为我应该拥有的:
function! PrintGivenRange() range
echo "firstline ".a:firstline." lastline ".a:lastline
" Do some more things
endfunction
command! -range PassRange call PrintGivenRange()
然而,它不起作用,似乎只通过了第一行。
e.g。
: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
吗?我该如何解决这个问题?
答案 0 :(得分:22)
您需要明确传递范围,请尝试:
command! -range PassRange <line1>,<line2>call PrintGivenRange()
答案 1 :(得分:0)
如果你想在可视模式下使用当前选中行的范围,你可以使用下面的:
command! -range PassRange '<,'> call PrintGivenRange()
'<
:当前缓冲区中当前选中可视区域的第一行。'>
:当前缓冲区中当前选中可视区域的最后一行。