“范围”函数是否可以返回值

时间:2013-04-01 07:56:23

标签: vim

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

fu! TQ84_fu_test() range 

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

endfu

如果我试着这么称呼它

:'<,'>echo TQ84_fu_test()

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

是否还有办法绕过这种行为,这样我就可以“获取”在某个范围内运行的函数的返回值。

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

2 个答案:

答案 0 :(得分:2)

命令行中不需要'<,'>,因为:echo命令不在范围上运行。这不会阻止您的功能使用仍可以解析的<>标记。

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

答案 1 :(得分:1)

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