3

範囲で検索と置換を実行する関数を作成しようとしています。

これをvimコマンドとして実行できることは知っています:2,5 s/some pattern/something else/が、関数定義内でこれがどのように機能するかわかりません。最初に、私は試しました

function! MyFunc() range
  a:firstline,a:lastline s/some pattern/something else/
endfunction

しかし、その関数をロードしようとすると、エラーが発生しますMissing :endfunction。このような状況で call が使用されることがある他のチュートリアルや例で気づいたように、call も試しました。call a:firstline,a:lastline s/some pattern/something else/と の両方を試しましa:firstline,a:lastline call s/some pattern/something else/た。これで機能が読み込まれました。しかし、実行して関数を呼び出そうとすると、検索/置換行を指すエラーが発生します:2,4 call MyFunc()Missing parenthesis

誰でもこれで私を助けることができますか?関数呼び出しで検索と置換を行う方法の例をまだ見つけていません。

ありがとう

4

1 に答える 1

11

Missing :endfunction 関数定義が不完全であるため、エラーが発生しています。以下に示すものを試してください。動作するはずです

function! MyFunc() range
  execute a:firstline . "," . a:lastline . 's/some pattern/something else/'
endfunction
于 2013-07-04T02:10:50.317 に答える