3

我正在尝试编写一个在范围内运行搜索和替换的函数。

我知道可以:2,5 s/some pattern/something else/用 vim 命令来做到这一点,但我不知道这在函数定义中是如何工作的。最初,我尝试过

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

但是当我尝试加载该函数时,我得到了错误Missing :endfunction。我也尝试过调用,正如我在其他教程和示例中注意到的那样,有时调用会在这种情况下使用。我都试过了call a:firstline,a:lastline s/some pattern/something else/a:firstline,a:lastline call s/some pattern/something else/。有了这个,函数就加载了。但是,当我尝试使用doing 调用该函数时: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 回答