当我通过 vim 输入 shell 命令时——例如:!rake routes
——我会得到一些输出,然后:
Press ENTER or type command to continue
如果我在那个时候按下任何东西,我总是会被带回主 vim UI。如何在 shell 模式下停留更长时间,特别是我可以向后滚动查看命令的所有输出?
当我通过 vim 输入 shell 命令时——例如:!rake routes
——我会得到一些输出,然后:
Press ENTER or type command to continue
如果我在那个时候按下任何东西,我总是会被带回主 vim UI。如何在 shell 模式下停留更长时间,特别是我可以向后滚动查看命令的所有输出?
对于终端 vim 滚动由终端仿真器提供(或终端多路复用器,如 tmux/screen,如果您使用它)。即如果您的终端在使用<S-PageUp>
时滚动,它也必须使用 Vim 的!
. 鼠标滚轮也一样(即使 vim 配置为自己处理鼠标,它也适用于我)。
如果有终端 vim 并且您需要在按下后查看输出,<CR>
那么您可以使用<C-z>
/ :susp
。这两种功能都会因 vim 或终端(终端多路复用器)的错误配置(即终端配置为不支持备用屏幕(这通常是终端多路复用器而不是终端仿真器的问题:screen
需要altscreen on
in .screenrc
)或 vim 设置告诉 vim 要启动/恢复和关闭/挂起时向终端的输出被破坏)。
如果你有 GUI vim,你的选择非常有限。在这种情况下,最好遵循@glts 或@EricAndres 建议提供的链接,因为我不使用GUI vim。
:r! [shell command]
将命令的输出读入缓冲区。因此,如果您打开一个新缓冲区然后使用该命令,您可以随意搜索和滚动它。有关更多信息,请参阅Vimcast 第 57 集。