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

时间:2013-11-04 18:55:42

标签: vim

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

Press ENTER or type command to continue

如果我在那时按任何东西,我总是会回到主vim UI。如何在shell模式下停留一段时间,具体来说我可以向后滚动以查看命令的所有输出?

2 个答案:

答案 0 :(得分:2)

对于终端vim,滚动是由终端仿真器(或者如果你使用tmux / screen的终端多路复用器)提供的。即如果您的终端在使用<S-PageUp>时滚动,它还必须使用Vim的!滚动。对于鼠标滚轮也是如此(即使vim配置为自己处理鼠标,它也适用于我)。

如果有终端vim并且您需要在按下<CR>后查看输出,则可以使用<C-z> / :susp。这些功能都会因vim或终端(终端多路复用器)的错误配置而被破坏(即终端配置为不支持备用屏幕(这通常是终端多路复用器的问题,而不是终端仿真器:screen需要altscreen on.screenrc)或vim设置告诉vim在启动/恢复时输出到终端的内容和关闭/暂停被破坏了。

如果你有GUI vim,你的选择非常有限。在这种情况下,最好遵循@glts或@EricAndres建议提供的链接,因为我不使用GUI vim。

答案 1 :(得分:1)

:r! [shell command]会将命令的输出读入缓冲区。因此,如果您打开一个新的缓冲区然后使用该命令,您可以搜索并滚动浏览它。有关详细信息,请参阅Vimcasts episode 57