我有一个Ex命令,根据是否指定了范围,它的工作方式不同。我想知道命令的哪个变体用于改变它的行为。
我的命令定义是,
:command! -range Foo :call DoFoo(<line1>, <line2>)
目前,我使用<line1>
和<line2>
作为相同的行号,当我使用:Foo
时没有像CmdLine
这样的范围。因此,我可以检测何时提供范围,即: - 当行号不同时。
我想同样检测何时没有给出范围。
是否有vim变量/选项来执行此操作。我正在考虑类似于完成函数如何具有{{1}}参数,该参数指示Ex命令的整行到完整函数。
答案 0 :(得分:4)
我认为,应该做些什么,就是检查&lt; count&gt;变量
:command! -range Foo :call DoFoo(<line1>, <line2>, <count>)
如果没有给出范围,则count变量将为-1,否则它将等于第二个输入的地址(如果只给出一行,则为第一个)。
答案 1 :(得分:1)
似乎您想要获取用户输入的命令行,您可以查看注册:
在你的脚本中,它将是@:
,读取它以获取最后一个命令用户输入。如果要更改或执行其他操作,可以在函数中将其保存到变量中。