例如,我想将所有插件列表从
:enew
转储到:scriptnames
中,以便可以搜索。 br /> #1 楼
您可以使用:redir
将输出重定向到变量,寄存器或文件。重定向到未命名寄存器的示例::redir @">|silent scriptnames|redir END|enew|put
Tim Pope的scriptease.vim提供
:Scriptnames
命令,它将:scriptnames
加载到快速修复列表和:copen
中。 如果您发现自己重定向了许多命令,则可能需要将其包装在一个命令中:输出到新的缓冲区。例如
:Redir
或:Redir scriptnames
。Vim 8+
Vim 8附带了新的
:Redir ls
功能。您可以使用execute()
函数代替execute()
捕获命令输出。command! -nargs=+ -complete=command Redir let s:reg = @@ | redir @"> | silent execute <q-args> | redir END | new | pu | 1,2d_ | let @@ = s:reg
有关更多帮助,请参见:
:enew|pu=execute('scriptnames')
#2 楼
为了完整起见,我想展示一下我从romainl收集(偷走)的这些很棒的功能。。随时将
tabnew
更改为vsplit
或split
等。评论
指向@ romainl的要点gist.github.com/romainl/eae0a260ab9c135390c30cd370c20cd7的链接
–Dyno Fu
18/12/10在4:12
@DynoFu,添加了指向我的答案的链接。
–klaus
19 Mar 30 '19在4:45
#3 楼
这里还有bufferize.vim插件: >#4 楼
最好的解决方案是使用asyncrun插件(需要vim8 +):https://github.com/skywind3000/asyncrun.vim
:AsyncRun -mode=term -pos=bottom -rows=15 -cols=40 -focus=0 pwd
将打开一个底部有15行终端,运行linux命令pwd并在其中显示输出。
阅读其Wiki了解更多信息。
评论
OP希望捕获Vim命令而不是Shell命令的输出。
–丰富
20-2-5在17:30
#5 楼
为了易于理解,我将完整的命令分为几个子命令:重定向到注册“
执行实际命令。直到最后输出的结果。
停止重定向。
打开新缓冲区,然后从寄存器“
:redir @"
:map
:redir END
:enew|put
粘贴” >
评论
END是什么意思?
–布莱斯·昆塔(Bryce Guinta)
16 Jun 22 '17:00
它将停止将输出重定向到寄存器,因此您可以再次获得常规输出。
– Tumbler41
16年6月22日在17:01
:redir END告诉Vim结束重定向消息。见:h:redir
– Peter Rincker
16年6月22日在17:01
要执行外部命令并将其输出捕获到Vim变量中,请使用system()。 :let主机名= system('主机名')
–user3751385
17年7月29日在8:37