【发布时间】:2018-08-14 22:31:40
【问题描述】:
大量消息表明,运行诸如:! wc % 之类的“bang”命令将在 Vim 中的编辑器窗口下方显示结果。 (例如,this tip sheet 声明这是预期的行为。)
具体来说,我正在关注 Tim Pope 的 Fugitive 插件中的 this Vimcast tutorial,并且 Drew Neil 指出运行 :Git 命令将允许用户从 Vim 内部运行任意 git 命令——以及该命令的输出将在 Vim 中显示在屏幕底部。
这不是我正在经历的行为。相反,我的 Vim 会话本质上是发送到后台,然后我被弹回终端查看输出。这一切都非常令人迷惑——特别是因为我失去了 Vim 会话提供的有用的视觉上下文,包括生成输出的“bang”命令。
如果 Vim 确实在编辑器窗口下方的 Vim 中显示外部生成的输出,我会很高兴的。我找到了一些similar types of questions,但在所有这些中,用户都希望将内容输出到一个新的缓冲区,而不是仅仅看到它暂时打印在编辑器窗口的底部。换句话说,我没有找到其他人描述我所看到的行为。
我能够在 gVim 中获得所需的行为,但 gVim 并不总是一个可行的选择,所以我想知道是否有更广泛的解决方案可以在基于终端的 Vim 中实现预期行为。
我在 Ubuntu 16.04 上使用 Vim 8.0。我的终端是带有 zsh shell 的 gnome-terminal。我在我的机器和 bash shell 上尝试了一些其他终端,无论我使用哪种组合,我都遇到了这种行为。
这里有两个屏幕截图展示了我所看到的行为。左边是基于终端的 Vim,右边是 gVim。请注意运行 :! wc % 如何在右侧的 gVim 中具有预期/期望的行为,但在左侧的常规 Vim 中却没有。
运行命令前的截图:
运行命令后的截图:
还有其他人遇到过这种情况吗?有其他人从他们基于终端的 Vim 中获得所需的行为吗? (也许这都是某种文档监督,而基于终端的 Vim 从来没有期望以期望的方式运行?)
谢谢!
【问题讨论】:
-
:r! command将读取命令输出并将输出插入到当前缓冲区的光标位置。 -
是的,这是我在问题中链接到的类似问题之一的解决方案。这似乎并不等同于暂时在屏幕底部显示它,因为我必须撤消写入当前缓冲区的输出(或者如果我将其发送到拆分或选项卡中的新缓冲区,那么我需要删除它发送到的缓冲区)。
-
您似乎想在 quickfix 窗口上显示外部命令输出。我很久以前也搜索过,但找不到很好的解决方案。 vim 只允许有限的命令,例如 make 或 grep 输出到 quickfix 窗口。