如何在Emacs ansi-term中向上滚动

30

我一直在谷歌上搜索并查看Emacs内置帮助,但是我还没有确定如何在Emacs ansi-term中向上(或向下)滚动。

我正在使用Emacs 23.3.1,在OS X上,在iTerm2中。谢谢!

编辑:我注意到大多数人给我的建议在ansi-term中不起作用,但在eshell中有效。 我已经转到eshell。

7个回答

51

一般情况下,如果您不需要全屏终端仿真,shell或者eshell会是更好的选择。

然而,如果您决定使用 ansi-term,按下 C-c C-j 进入行模式。这样,您就可以使用常规光标移动键进行移动。按下 C-c C-k 返回字符模式以与终端交互。

或者,您可以使用 C-c C-v 一次向后滚动一个屏幕,并输入文本直到回滚到终端输入点。

查看term-mode的Emacs文档(其中大部分同样适用于ansi-term)获取更多信息。


我更喜欢ansi-term,因为相比其他的emacs终端仿真器,它可以显示更多带有颜色的东西(例如执行git diff)。使用C-c C-j可以让我通过常规按键在页面上上下跳转。谢谢! - Mauvis Ledford
2
我使用启用了ANSI颜色的Shell,以获得最佳效果。您可以在.emacs文件中添加以下代码来为Shell模式打开ANSI颜色解释:(require 'ansi-color) (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) - ataylor

6

按下Shift+Page Up/Page Down键(在Emacs中,称为S-prior/S-next)可以使用默认绑定。

尽管在此模式下正常的C-h m/C-h b无法查看模式信息和绑定,但您仍然可以使用C-c M-x describe-mode/describe-bindings,或根据您的设置,使用F1键或帮助键而不是C-h键。


S-prior/S-next在ansi-term或eshell中无法工作,但感谢描述模式/绑定建议! - Mauvis Ledford
它在绑定中;对我肯定有效。也许与您的终端设置有关。 - Nicholas Riley
是的,看起来大多数终端应用程序都将Shift+Page Up/Down映射到浏览滚动缓冲区。如果您运行GUI Emacs,它肯定有效,我很惊讶您在Mac上没有运行它...它可以更好地集成。 - Nicholas Riley
谢谢尼古拉斯。我在终端中使用emacs,因为我有一半的时间都在ssh到远程开发机上运行emacs。我会使用tramp,但它不如ssh的emacs快。特别是在文件访问方面。而且,根据emacs的不同设置我的meta键也会引起烦恼。不过我确实想念那些额外的颜色... - Mauvis Ledford
是的,我知道那种感觉,并且也遇到了与TRAMP相同的问题。我要么使用NX来转发X11 Emacs,要么(最近更多地)只是在本地运行所有的开发环境,如果需要的话,涉及到虚拟机。 - Nicholas Riley

2

首先需要安装evil-mode,然后按下C-z切换到vim键位绑定。

  • 您可以使用C-fC-b向上或向下滚动
  • 您可以使用20%跳转到缓冲区前20%的位置
  • 您可以使用/?#*在缓冲区中搜索文本。
  • 所有grep/filter命令现在都可用(例如occur、swiper、helm-swoop等)
  • 您可以缩小/扩大缓冲区
  • 您可以复制文本

1
你尝试过吗:Page up,上箭头,Ctrl-V,Alt-V

那些不起作用。我已经在我的问题中更新了操作系统和其他细节。谢谢。 - Mauvis Ledford
只是一个提醒,这在eshell中有效。我现在已经从ansi-term切换到使用eshell了。 - Mauvis Ledford
我正在使用带有evil插件的spacemacs,因此我需要先按Esc键,然后再按Shift + Page Up和Page Down键。 - CMCDragonkai

1

对于 ansi-term,我在我的 .emacs 文件中有以下设置:

(add-hook 'term-mode-hook
          (function
           (lambda ()
             (define-key term-raw-map [?\C-c prior] 'scroll-down)
             (define-key term-raw-map [?\C-c next] 'scroll-up))))

然后我可以使用C-c pgupC-c pgdn来滚动。


0

我遇到了同样的问题,但是是在使用多个终端(zsh)时。在阅读了@muffinista的回复后(C-v对我无效),我发现使用Alt-v可以向上翻一页,之后您可以使用正常的C-pC-n来向上和向下滚动。

这对我有用,但它很大程度上取决于您使用的终端和可能拥有的键绑定。


-2

向上和向下分别是Ctrl-P和Ctrl-V。这里有一个完整的长列表在这里


1
Ctrl-P和Ctrl-V可以浏览bash历史记录。我已经更新了我的问题,包括操作系统和其他细节。谢谢。 - Mauvis Ledford
1
还有Ctrl-p和Ctrl-n。Ctrl-v将向下翻页。 - Mauvis Ledford

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