我试图编写一个接受gem名称的函数,并根据Bundler显示的内容在该gem的目录中运行Ctrl-P。现在我仍然坚持如何捕获shell命令的输出。
到目前为止,我有:
function! GemCtrlP(gem_name)
execute '!bundle list ' . a:gem_name
endfunction
我想保存该bundle
调用的输出,然后将其输入到CtrlP中。我可以执行CtrlP部分,但我不确定如何捕获shell输出
有什么想法吗?
答案 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