如何在vim的shell命令输出中滚动?

9

当我通过vim输入Shell命令,例如:!rake routes时,我会得到一些输出,然后:

Press ENTER or type command to continue

如果我此时按任何键,我总是会回到主vim界面。我怎样才能停留在shell模式更长一点时间呢?具体来说,我想要向上滚动以查看命令的所有输出。

你尝试使用管道了吗?例如 :!rake routes \| more?那可能会起作用。 - Rivasa
2个回答

2
对于终端vim,滚动由终端仿真器(或终端复用程序如tmux/screen)提供。也就是说,如果您在使用时终端可以滚动,那么它也必须滚动Vim的!。对于鼠标滚轮,情况也是一样的(即使vim已经配置为自己处理鼠标,它也能正常工作)。
如果您有终端vim,并且需要在按下后查看输出,则可以使用/。如果vim或终端(终端复用程序)配置不正确,则这两种功能都会受到破坏(即终端配置不支持备用屏幕(这通常是终端复用程序而不是终端仿真器的问题:screen需要在.screenrc中使用altscreen on),或vim设置告诉vim在启动/恢复和关闭/挂起时向终端输出的内容被破坏)。
如果您有GUI vim,则选项非常有限。在这种情况下,最好遵循@glts或@EricAndres建议提供的链接,因为我不使用GUI vim。

1

:r! [shell command]命令将从命令中读取输出到缓冲区。因此,如果您打开一个新的缓冲区,然后使用该命令,您可以随意搜索和滚动查看所有内容。有关更多信息,请参见 Vimcasts episode 57


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接