当我通过vim输入shell命令时 - 例如:!rake routes
- 我会得到一些输出然后:
Press ENTER or type command to continue
如果我在那时按任何东西,我总是会回到主vim UI。如何在shell模式下停留一段时间,具体来说我可以向后滚动以查看命令的所有输出?
答案 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。