我正在尝试编写一个在一个范围内运行搜索和替换的函数。
我知道可以做: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/
。有了这个,加载了功能。但是当我尝试通过执行:2,4 call MyFunc()
调用该函数时,我得到一个指向搜索/替换行的Missing parenthesis
错误。
任何人都可以帮我吗?我还没有找到如何在函数调用中进行搜索和替换的任何示例。
由于
答案 0 :(得分:9)
您收到错误Missing :endfunction
,因为函数定义不完整。尝试下面给出的,应该工作
function! MyFunc() range
execute a:firstline . "," . a:lastline . 's/some pattern/something else/'
endfunction