在Vim中捕获shell命令的输出

时间:2015-03-04 17:44:01

标签: vim

我试图编写一个接受gem名称的函数,并根据Bundler显示的内容在该gem的目录中运行Ctrl-P。现在我仍然坚持如何捕获shell命令的输出。

到目前为止,我有:

function! GemCtrlP(gem_name)
   execute '!bundle list ' . a:gem_name
endfunction

我想保存该bundle调用的输出,然后将其输入到CtrlP中。我可以执行CtrlP部分,但我不确定如何捕获shell输出

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用:redir命令可以捕获任意vim命令。 对于shell命令,通常更容易使用system()函数。

请参阅

中的帮助
:h :redir
:h system

帮助中应该有足够的示例(或者查看一些插件)。

答案 1 :(得分:1)

Christian发布的更详尽的版本:

function! GemCtrlP(gem_name)
  let path = system('bundle list ' . a:gem_name . ' | tr -d "\n"')
  execute 'CtrlP ' . path
endfunction