我有这个我要定义的自定义命令。但我无法分别得到论点:
:command -nargs=2 :%s/<args1>/<args2>/gc // <args1> <args2> dont work
任何人都有这方面的解决方案吗?
答案 0 :(得分:2)
<args1>
和<args2>
不存在。你自己发明了这个。最简单的方法是使用函数包装器和<f-args>
:
fun! s:sub(search, replace)
execute ':%s/' . a:search . '/' . a:replace . '/gc'
endfun
command! -nargs=+ Replace call s:sub(<f-args>)
<f-args>
在空白处拆分命令参数,并添加正确的引号和逗号,以便将其传递给函数。
使用函数包装器还具有在完成运行后重置@/
寄存器的额外好处。如果您不想这样做,请使用let @/ = a:search
明确指定。
除此之外,几乎所有关于:command
电话的内容都是错误的:
-nargs=2
不受支持 - 请参阅:help :command-nargs
//
并不用于表示VimScript中的评论; "
用于此。有关语法的完整说明,请参阅:help :command
。