如果我有一个带有两个分割的vim会话,则当我执行:!命令时,结果将显示在整个窗口中。是否可以仅在活动拆分上显示输出?

评论

不,这是不可能的。输出:在命令行中显示,其中只有一个,并且只能在屏幕底部。我能想到的最好的办法是在当前缓冲区下面创建一个新的buffer /:split ...

@Carpetsmoker,对我来说,:!的输出!不转到命令行。相反,vim会话消失了,整个终端窗口显示了终端输出,包括在调用vim之前打印的内容。

也许是由于您使用的终端和/或TERM设置所致?

这种差异与altscreen(在屏幕中)或备用屏幕(在tmux中)有关。

#1 楼

您可以使用以下命令:
:new | 0read ! command

这将打开一个新的拆分,并将命令的输出放入此拆分中(尽管您提到的当前活动拆分中没有)。 br /> new-创建新的拆分
read-获取命令输出
command-实际命令


#2 楼

您可以执行以下命令:


打开新的拆分(或标签)
运行命令并显示该拆分(或标签)中的结果

命令如下所示:

:Rsplit command




:Rtab command


在您的.vimrc可以这样写:

" execute a command and show its output in a split window
command! -nargs=* -complete=shellcmd Rsplit execute "new | r! <args>"

" execute a command and show its output in a new tab
command! -nargs=* -complete=shellcmd Rtab execute "tabnew | r! <args>"


您可以找到如何使用:help :command编写自己的命令。

#3 楼

那是不可能的。您必须使用tmux(IIRC),屏幕等其他工具来拆分屏幕。

如果不需要与执行的程序进行交互,则可以直接导入其结果在您希望使用:h windows的任何窗口中(在vim中为:r!command line)。 :h :r!