是否有可能输出:!命令而不是整个窗口?


11

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


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

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

1
也许是由于您使用的终端和/或TERM设置所致?
马丁·图尔诺伊

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

Answers:


8

您可以使用以下命令:

:new | 0read ! command

这将打开一个新的拆分,并将命令的输出放入该拆分中(尽管没有像您提到的那样位于当前活动的拆分中)。

-创建新的拆分

读取 -获取命令输出

命令 -实际命令


6

您可以执行以下命令:

  1. 打开一个新的拆分(或标签)
  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


1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.