18

範囲を取り、それを関数に渡すことができるコマンドを定義しようとしています。これは私が持っているべきだと思ったものです:

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ますか? これを修正するにはどうすればよいですか?

4

2 に答える 2

26

範囲を明示的に渡す必要があります。次を試してください。

command! -range PassRange <line1>,<line2>call PrintGivenRange()
于 2012-05-13T15:46:54.063 に答える