考虑任何解释型编程语言。
我可以使用 运行当前打开的脚本! 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
。