1

以下简单函数应该计算并返回视觉选择的行数:

fu! TQ84_fu_test() range 

    return line("'> ")  - line("'<") + 1

endfu

如果我试着这样称呼它

:'<,'>echo TQ84_fu_test()

Vim 给了我错误E481 No range allowed(以某种方式记录)

是否还有一种方法可以规避这种行为,以便我可以“获取”在某个范围内运行的函数的返回值。

我假设我可以在函数中设置一个全局变量,并在函数被调用后读取这个全局变量,但是,如果可能的话,我宁愿不这样做。

4

2 回答 2

2

您不需要'<,'>在命令行中,因为该:echo命令不对范围进行操作。这不会阻止您的函数使用仍然可以解决的<和标记。>

因此,只需在点击:use Ctrl-U后删除标记并使用:echo TQ84_fu_test(). 这应该有效。

于 2013-04-01T08:49:54.873 回答
1

range只适用于:call,不适用:echo。由于您不使用a:firstline/a:lastline附带的特殊变量range,因此您无需在此处打扰(使用视觉模式及其标记),无论如何。

于 2013-04-01T20:22:58.743 回答