如何让Emacs停止解析shell输出

4

我有一个带有大量垃圾信息的shell,而emacs尝试解析所有内容。我不想停止命令,但我希望emacs停止占用我的所有CPU。有没有办法告诉emacs只打印信息而不尝试匹配括号等内容?

4个回答

2
我认为 commint-mode 是 shell-mode 的“基础”模式,语法/文件/错误高亮是问题的罪魁祸首。因此,您可以寻找方法来简化 shell/comint-mode,仅保留允许与 shell 交互的那些功能。首先查看 C-h v shell-mode-hook 和 C-h v comint-mode-hook,特别是查找 compilation-shell-minor-mode、ansi-color-for-comint-mode-on 或任何其他涉及大量检查 shell 输出的次要模式。

1
顺带提一下,还有一个键绑定可以刷新到目前为止的输出;它被称为类似于 comint-flush-output,如果输出完全没有趣味性和/或缓冲区的大小成问题,那么它可能会很有用。 - tripleee

1

我不认为有这样的功能,所以(就我所知)你只有两个选择:

  • CTRL+c, CTRL+c 取消命令
  • 使用 PageUp 键来停止滚动

根据我的经验,将光标位置移动到输出滚动之上会在一定程度上有所帮助。我不确定它是否只是节省了emacs向屏幕写入的工作量,还是能够节省其他的工作,但像我刚才说的那样,它确实有些帮助。


1

我怀疑切换主要模式会导致很大的问题,但你可以尝试禁用该缓冲区的所有次要模式。


1

虽然没有直接回答问题,但您可以使用 shell-commandM-!)将长命令运行到单独的缓冲区中。"Shell Command Output" 缓冲区将会处于 Fundamental 模式。

我已经开始使用这个功能来运行那些我知道输出内容很长的命令,以防止我的 shell 缓冲区变得臃肿;另一个好处是缺少了不正确的语法高亮。


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