我试图编写一个函数,对一定范围内的内容进行搜索和替换。
我知道可以使用vim命令
但是当我试图加载该函数时,出现了
有人能帮我解决这个问题吗?我还没有找到任何如何在函数调用中执行搜索和替换的示例。
谢谢
我知道可以使用vim命令
:2,5 s/某个模式/另一个内容/
来执行此操作,但我不知道如何在函数定义中使用它。最初,我尝试了以下代码: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
错误。有人能帮我解决这个问题吗?我还没有找到任何如何在函数调用中执行搜索和替换的示例。
谢谢
:endfunction
是因为虚拟解析器记录函数体时认为a:firstline
开始了:append
命令,该命令会吃掉一切直到带有单个点的行。如果您添加这样的行并在其后添加另一个endfunction
,则会得到预期的错误,因为:append
命令不能跟随:firstline
。 - ZyX\n
被解释为null,这是vim文档中记录的行为,但是当使用单引号时,它被解释为换行符。 - 4Z4T4R