【问题标题】:Emacs shell control of command output displayEmacs shell控制命令输出显示
【发布时间】:2019-05-31 15:19:43
【问题描述】:

我刚刚将操作系统从 Ubuntu 16.04 升级到 18.04,但由于某种原因,emacs 消失了。

在重新安装时,我刚刚注意到运行 M-x shell 然后运行 ​​hg diff 会产生错误消息:

WARNING: terminal is not fully functional
-  (press RETURN)

我想我可能已经通过运行解决了这个问题:

export TERM=xterm

之后我获得了非常丰富多彩的 shell 体验,并且在运行 hg diff 时没有警告

但是,它现在只显示hg diff 输出的一页,然后一次以: 暂停,以前它会不停地打印该批次。

我认为这可能是可以接受的,如果我能弄清楚哪个键允许我打印hg diff 输出的下一页,理想情况下,哪个键可以允许打印剩余的hg diff输出并将我返回到 shell 提示符。

如果我按回车键,我会一次得到一条额外的线路,但这有点慢而且不是很理想。

我认为这可能是关于 xterm 快捷键的问题?可能不是特定于 emacs,但我不确定..

【问题讨论】:

标签: shell emacs xterm


【解决方案1】:

shell-mode 是行缓冲的,这意味着在您输入RET 之前,输入不会被发送到底层进程。在这种情况下,输出应该通过像less 这样的程序运行,其中RET 会给你另一个页面而不是一行。

因此,在shell-mode 中,您可以使用SPC,后跟RET。在term-mode 中,默认值不是行缓冲(以尽可能透明地类似于底层外壳),单个RET 应该足以为您提供一个新页面。

【讨论】: