如何清空或清除emacs迷你缓冲区?

时间:2015-03-03 11:45:25

标签: emacs

有时迷你缓冲区的内容会显示命令的输出(emacs 24)。当输出只是一行时,这不是太麻烦。当命令多行很长并且迷你缓冲器使用许多可用于其他东西的显示行时,这会更烦人。

有没有办法清除迷你缓冲区的内容?

注意:当我M-! echo usage: foo ; echo时,迷你缓冲内容会更改为usage: foo

注意:我没有进行递归编辑,迷你缓冲区未激活,使用C-g, M-x C-g , (message nil), M-x delete-minibuffer-contents, M-: (kill-buffer " Echo Area 0")不清除迷你缓冲区

5 个答案:

答案 0 :(得分:8)

通常情况下,C-g在这些情况下效果很好。它将在迷你线中打印“退出”,这只是一条线而且不显眼。

如果您需要以编程方式清除迷你缓冲区,请致电(message nil)

如果由于某种原因,C-g对您不起作用,请创建一个新命令和一个用于清除迷你缓冲区的键绑定

(defun my-clear-message ()
  (interactive)
  (message nil))

(global-set-key (kbd "C-c c") 'my-clear-message)

答案 1 :(得分:3)

我的猜测,从您的描述(“迷你缓冲区未激活”)和您对其他答案的回复,是需要清除的迷你缓冲区 - 它是回声区域

这是相同的物理空间,但回波区域用于输出(例如message),而迷你缓冲区主要用于输入。

要清除回音区域,请按照建议使用(message nil)。或者使用迷你缓冲区,然后使用C-g - 例如M-x C-g。这通常会处理这项工作(但请参阅下文,如果你真的需要清除它,那么关于杀死echo-area缓冲区)。

如果确实要清除迷你缓冲输入,那么:

  • C-g(如有必要,重复)退出迷你缓冲区。
  • 您可以使用任何文本清除键清除输入而不退出。例如,C-x DEL将清除相当多(它是backward-kill-sentence)。我将M-k(通常为kill-sentence)绑定到删除所有迷你缓冲区输入的命令(例如,Icicles中就是这种情况)。命令delete-minibuffer-contents将其全部清除。

(你也可以杀死echo-area缓冲区,如果它应该被你要删除的一些文本污染。缓冲区将自动重新创建。使用vanilla Emacs这样做有点问题以交互方式,但您至少可以使用M-: (kill-buffer " *Echo Area 0*")(请注意SPC字符前缀)。)

答案 2 :(得分:2)

虽然我不明白为什么以下清除迷你缓冲区:M-! echo ; echo

答案 3 :(得分:2)

在Emacs中执行任何其他操作后,通常会清除此输出。但有时Emacs会感到困惑,并且消息会在回声区域中重新出现。

删除名为*Shell Command Output*的缓冲区可以解决问题,但是当我发生这种情况时,Emacs拒绝删除此缓冲区。删除此缓冲区的内容可以解决问题,但下次执行shell命令时输出会重新出现在缓冲区中。

您可以通过重命名缓冲区来防止出现此问题。一种方法是使缓冲区成为当前缓冲区(例如,使用C-x bM-x switch-to-buffer)并执行M-x rename-uniquely。如果这样做并删除缓冲区的内容,则可以避免此问题。

我不知道为什么Emacs有时会拒绝杀死这个缓冲区,但幸运的是它允许重命名它以便它不再被重用于命令输出。

答案 4 :(得分:0)

尝试按 C-g ,这将清除回音区域。