2

我有一个 Ex 命令,它根据是否指定范围而有所不同。我想知道该命令的哪个变体被用来改变它的行为。

我的命令定义是,

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

目前<line1><line2>当我在没有:Foo. 因此,我可以检测何时提供范围,即: - 当行号不同时。

我还想检测何时未给出范围。

是否有 vim 变量/选项来执行此操作。我正在考虑类似于完成函数如何有一个CmdLine参数来指示完整函数的 Ex 命令的整行。

4

2 回答 2

4

我认为,应该做的是检查 <count> 变量。

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

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

于 2013-09-19T14:44:06.433 回答
1

似乎您想获取命令行用户输入的信息,您可以检查注册表:

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

于 2013-09-19T14:40:44.273 回答