在拆分窗格中打开 shell 命令的输出

在拆分窗格中打开 shell 命令的输出

考虑任何解释型编程语言。

我可以使用 运行当前打开的脚本! interpreter %,并在执行完成后使用返回键返回 vim。

是否可以不用执行的 shell 命令的输出替换当前窗口,而是在新的拆分窗格中打开输出?我希望在执行脚本期间仍然可以看到我的源代码。

我试过了:split ! interpreter %,但是没用。

有办法吗?我正在使用 vim 7.3。

答案1

使用:!,外部命令在 shell 中执行,并且不会在 Vim 内部捕获短暂的输出;您只会看到打印到终端的内容,然后在外部命令完成后控制权返回到 Vim。

为了保留输出,你必须将其读入 Vim缓冲。为此,有一个:read!命令。要打开新的划痕缓冲区,将其与以下项相结合:new

:new | 0read ! <command>

如果要将当前缓冲区的文件名(%)传递给外部命令,则必须使用:execute,以便它已经在当前缓冲区中进行评估:

:execute 'new | 0read ! interpreter' expand('%')

或者,你可以利用这样一个事实:有了新的缓冲区,前一个缓冲区就会变成备用一,并使用#而不是%

:new | 0read ! interpreter #

使用 删除临时缓冲区:bdelete!

如果您想在执行时异步查看输出,则需要一个外部多路复用器或插件,如@chaos 答案中提到的。

答案2

据我所知,您无法在 中执行此操作vim。但可以使用类似的终端多路复用器screen。在打开 vim 之前,启动多路复用器:

screen

然后按ctrl-a S表示水平分割屏,按ctrl-a |表示垂直分割屏。

现在在其中一个分屏中打开一个文件。然后使用-vim跳转到另一个屏幕。请注意,在第二个屏幕中,您必须先打开一个新屏幕 ( - ),然后才能使用它。ctrla tabctrla c

在使用 vim 的屏幕上,您可以编辑文件,而在另一个屏幕上,您可以执行它并永久查看消息和代码。

这里快速参考为了screen

相关内容