以下简单函数应该计算并返回视觉选择的行数:
fu! TQ84_fu_test() range
return line("'> ") - line("'<") + 1
endfu
如果我试着这么称呼它
:'<,'>echo TQ84_fu_test()
Vim给我错误E481 No range allowed
(以某种方式记录)
是否还有办法绕过这种行为,这样我就可以“获取”在某个范围内运行的函数的返回值。
我假设我可以在函数中设置一个全局变量,并在调用函数后读取这个全局变量,但是,如果可能的话,我宁愿不这样做。
答案 0 :(得分:2)
命令行中不需要'<,'>
,因为:echo
命令不在范围上运行。这不会阻止您的功能使用仍可以解析的<
和>
标记。
因此,在点击:
后,使用 Ctrl - U 删除标记并使用:echo TQ84_fu_test()
。这应该有用。
答案 1 :(得分:1)
range
仅适用于:call
,而非:echo
。由于您不使用a:firstline
附带的a:lastline
/ range
特殊变量,因此无论如何都不需要在此处(使用可视模式及其标记)。