从vimscript中的内部vim命令获取返回值

时间:2011-09-15 17:15:17

标签: vim

我想做点什么

let colors = execute(":highlight")

这显然不正确,我只能execute(":highlight")打开一个窗口,但我真正需要的是将该窗口的内容转换为变量 - 就像system()一样调用将对外部命令执行。可以这样做吗?

2 个答案:

答案 0 :(得分:5)

有一个专门设计的名为:redir的命令 捕获文件,寄存器或中的一个或多个命令的输出 一个变量。在后一种情况下,用法如下 示例

:redir => colors
:silent highlight
:redir END

要查看调用命令的完整列表,请参阅 :help :redir。有关:redir的实际用途,请参阅问题my answerExtending a highlighting group in Vim

答案 1 :(得分:3)

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

Which只封装:redir。甚至更好:

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

which将结果作为列表变量返回,如果我们别无选择,则通过:redir,或者在定义时通过execute()。这种新方法是首选,因为它具有较少的不良副作用。