Answers:
使用:!
,外部命令在shell中执行,而短暂的输出则不会在Vim内部捕获。您只需要看到打印到终端的内容,然后在外部命令完成后,控制权返回Vim。
要保留输出,您必须将其读入Vim 缓冲区。为此,有:read!
命令。要打开新的暂存缓冲区,请将其与:new
:
:new | 0read ! <command>
如果要将当前缓冲区的文件名(%
)传递给外部命令,则必须使用:execute
,以便已在当前缓冲区中对其进行求值:
:execute 'new | 0read ! interpreter' expand('%')
或者,您使用以下事实:使用新缓冲区,前一个缓冲区将成为备用缓冲区,并使用#
代替%
:
:new | 0read ! interpreter #
使用摆脱暂存缓冲区:bdelete!
。
如果要在执行过程中异步查看输出,则需要一个外部多路复用器或一个插件,如@chaos答案中所述。
据我所知,您无法在中执行此操作vim
。但是screen
为此使用终端多路复用器。在打开vim之前,启动多路复用器:
screen
然后按ctrl- a S水平,和ctrl- a |垂直溢出屏幕。
现在,vim
在一个分割屏幕中打开一个文件。并使用ctrl- 跳到另一个屏幕a tab。请注意,在第二个屏幕中,您必须先打开一个新屏幕(ctrl- a c),然后才能使用它。
在带有vim的屏幕中,您可以编辑文件,在另一个屏幕中,您可以执行该文件并永久查看消息和代码。
这里一个快速参考的screen
。
tmux
多路复用器和vim-dispatch
插件自动在窗格之间进行拆分和跳转。