如何在自定义命令期间获取参数?

时间:2016-03-28 15:57:42

标签: vim

我有这个我要定义的自定义命令。但我无法分别得到论点:

:command -nargs=2 :%s/<args1>/<args2>/gc // <args1> <args2> dont work

任何人都有这方面的解决方案吗?

1 个答案:

答案 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