检测何时未向自定义Ex命令提供范围

时间:2013-09-19 14:24:15

标签: vim

我有一个Ex命令,根据是否指定了范围,它的工作方式不同。我想知道命令的哪个变体用于改变它的行为。

我的命令定义是,

:command! -range Foo :call DoFoo(<line1>, <line2>)

目前,我使用<line1><line2>作为相同的行号,当我使用:Foo时没有像CmdLine这样的范围。因此,我可以检测何时提供范围,即: - 当行号不同时。

  

我想同样检测何时没有给出范围。

     

是否有vim变量/选项来执行此操作。我正在考虑类似于完成函数如何具有{{1}}参数,该参数指示Ex命令的整行到完整函数。

2 个答案:

答案 0 :(得分:4)

我认为,应该做些什么,就是检查&lt; count&gt;变量

:command! -range Foo :call DoFoo(<line1>, <line2>, <count>)

如果没有给出范围,则count变量将为-1,否则它将等于第二个输入的地址(如果只给出一行,则为第一个)。

答案 1 :(得分:1)

似乎您想要获取用户输入的命令行,您可以查看注册:

在你的脚本中,它将是@:,读取它以获取最后一个命令用户输入。如果要更改或执行其他操作,可以在函数中将其保存到变量中。