由命令调用的捕获函数返回值

时间:2015-12-08 22:10:14

标签: function vim command

鉴于以下内容,我如何调用该命令并捕获函数的返回值(来自vimscript,而不是命令模式):

function! lib#stuff(one, two, ...)
  if a:0 == 1
    let l:three = a:1
  else
    let l:three = 'NULL'
  endif

  return a:one . a:two . l:three
endfunction!

command! -nargs=+ Stuff call lib#stuff(<f-args>)

" Does not work:
let result = Stuff '1', '2', '3'
echom Stuff '1', '2', '3'

1 个答案:

答案 0 :(得分:0)

使用命令行命令,您无法获得函数返回的值。

但是如果你真的需要从你在自定义命令中调用的函数中捕获返回值并做一些其他的工作,有办法:(假设带有返回值的函数不能更改):

  • 编写一个包装函数,从那里调用带有返回值的函数,然后用它做一些工作。

  • 如果要在执行命令后读取返回值,可以在包装函数(或:命令中的连接语句)中将返回值赋给某个​​缓冲区/全局变量,这样在用户执行之后命令,他可以从变量中获得“返回值”。

  • 如果您只想显示返回值,请在:command执行echo lib#stuff(....)例如。 :command! XY echo string(7*7)这将回显49

相关问题