0

我一直使用 !command 语法从 vim 运行 shell 命令

当您在屏幕上看到一个命令的结果并按下 ! 再次(意图执行另一个命令)。除了底部的命令外,整个屏幕变黑。

为什么会这样?在我看来,屏幕上仍然保留上一个 shell 命令的输出会更有用。

是否有阻止屏幕在后续命令中变黑的设置?

4

1 回答 1

3

如果你的意思是当前面的外部命令输出仍然可见,而 Vim 显示“Press ENTER or type command to continue”提示时,:!确实会清除输出。那是因为 Vim 的命令行(你用 输入:)总是在屏幕的底部。没有办法解决这个问题。

为了帮助您解决问题,许多人会建议使用终端多路复用器,如screentmux,并在两个窗口中使用 Vim 的拆分和单独的 shell。然后,您可以使用多路复用器的命令移入/移出 Vim,并根据需要调整相应窗口的大小。

没有它,只使用 Vim,解决方法是在暂存缓冲区中捕获命令输出:

:new | 0read !ls

是基本命令;在插件或 Vim Tips Wiki 上有更详细的实现。

还有一些插件(比如ConqueShell,感谢 Kent!)尝试在 Vim 中实现终端,但这些插件对上述多路复用器有限制。

于 2013-09-04T15:14:38.410 回答