从Vimscript中的内部Vim命令获取返回值

从Vimscript中的内部Vim命令获取返回值,vim,Vim,我想做一些像 let colors=execute(“:highlight”) 这显然是错误的;我所能做的就是execute(“:highlight”),它将打开一个窗口,但我真正需要的是将该窗口的内容放入一个变量中,就像system()调用将用于外部命令一样。这能做到吗 let colors = lh#askvim#exe(':hi') 只是封装。或者更好: let colors = lh#askvim#execute(':hi') 将结果作为列表变量返回,如果没有选择,则通过:redi

我想做一些像

let colors=execute(“:highlight”)
这显然是错误的;我所能做的就是
execute(“:highlight”)
,它将打开一个窗口,但我真正需要的是将该窗口的内容放入一个变量中,就像
system()
调用将用于外部命令一样。这能做到吗

let colors = lh#askvim#exe(':hi')
只是封装。或者更好:

let colors = lh#askvim#execute(':hi')

将结果作为列表变量返回,如果没有选择,则通过
:redir
,或者在定义时通过。这种新方法更受欢迎,因为它具有较少的不良副作用。

有一个名为
:redir
的命令,专门设计用于 将一个或多个命令的输出捕获到文件、寄存器或 一个变量。在这种情况下,后一种选择是我们想要的:

:redir => colors
:silent highlight
:redir END
要查看调用该命令的方法的完整列表,请参阅
:帮助:重拨
。另请参见问题“”,了解
:redir
的另一实际用法