如何清空或清除 emacs 迷你缓冲区?
how to empty or clear the emacs minibuffer?
有时迷你缓冲区的内容会显示命令的输出 (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")
不会清除迷你缓冲区
尝试按C-g,这将清除回声区域。
通常,C-g
在这些情况下工作得很好。它会在 minibufer 中打印 "Quit",这只是一行并且足够不显眼。
如果您需要以编程方式清除迷你缓冲区,请调用 (message nil)
。
如果由于某种原因 C-g
对您不起作用,请创建一个新命令和一个键绑定来清除迷你缓冲区
(defun my-clear-message ()
(interactive)
(message nil))
(global-set-key (kbd "C-c c") 'my-clear-message)
根据您的描述 ("the minibuffer is not active") 和您对其他答案的回复,我的猜测是 而不是 需要清除的迷你缓冲区 - 它是 回声区.
这是相同的物理 space,但回显区域用于输出(例如 message
),而迷你缓冲区主要用于输入。
要清除回声区域,请按照建议使用(message nil)
。或者使用迷你缓冲区,后跟 C-g
- 例如,M-x C-g
。这通常可以完成工作(但请参阅下文,如果您确实需要清除回声区缓冲区,请参阅下文)。
如果确实是你要清除的minibuffer输入,那么:
C-g
(重复,如有必要)退出迷你缓冲区。
- 您可以使用任何文本清除键来清除输入而不退出。例如,
C-x DEL
会清除很多(它是 backward-kill-sentence
)。我将 M-k
(通常是 kill-sentence
)绑定到删除所有迷你缓冲区输入的命令(例如 Icicles 就是这种情况)。命令 delete-minibuffer-contents
将其全部清除。
(你也可以杀死回声区缓冲区,如果它曾经被一些你想摆脱的文本污染。缓冲区将自动重新创建。使用香草 Emacs 有点问题以交互方式执行此操作,但您至少可以使用 M-: (kill-buffer " *Echo Area 0*")
执行此操作(注意 SPC
字符前缀)。)
虽然我不明白为什么以下清除迷你缓冲区:M-! echo ; echo
只要您在 Emacs 中执行任何其他操作,通常会立即清除此输出。但有时 Emacs 会感到困惑,并且消息会不断重新出现在回显区域中。
删除名为 *Shell Command Output*
的缓冲区将解决问题,但当我遇到这种情况时,Emacs 拒绝删除此缓冲区。删除此缓冲区的内容可以解决问题,但下次执行 shell 命令时输出会重新出现在缓冲区中。
您可以通过重命名缓冲区来防止出现该问题。一种方法是使该缓冲区成为当前缓冲区(例如,使用 C-x b
或 M-x switch-to-buffer
)并执行 M-x rename-uniquely
。如果这样做并删除缓冲区的内容,问题就可以避免。
我不知道为什么有时 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")
不会清除迷你缓冲区
尝试按C-g,这将清除回声区域。
通常,C-g
在这些情况下工作得很好。它会在 minibufer 中打印 "Quit",这只是一行并且足够不显眼。
如果您需要以编程方式清除迷你缓冲区,请调用 (message nil)
。
如果由于某种原因 C-g
对您不起作用,请创建一个新命令和一个键绑定来清除迷你缓冲区
(defun my-clear-message ()
(interactive)
(message nil))
(global-set-key (kbd "C-c c") 'my-clear-message)
根据您的描述 ("the minibuffer is not active") 和您对其他答案的回复,我的猜测是 而不是 需要清除的迷你缓冲区 - 它是 回声区.
这是相同的物理 space,但回显区域用于输出(例如 message
),而迷你缓冲区主要用于输入。
要清除回声区域,请按照建议使用(message nil)
。或者使用迷你缓冲区,后跟 C-g
- 例如,M-x C-g
。这通常可以完成工作(但请参阅下文,如果您确实需要清除回声区缓冲区,请参阅下文)。
如果确实是你要清除的minibuffer输入,那么:
C-g
(重复,如有必要)退出迷你缓冲区。- 您可以使用任何文本清除键来清除输入而不退出。例如,
C-x DEL
会清除很多(它是backward-kill-sentence
)。我将M-k
(通常是kill-sentence
)绑定到删除所有迷你缓冲区输入的命令(例如 Icicles 就是这种情况)。命令delete-minibuffer-contents
将其全部清除。
(你也可以杀死回声区缓冲区,如果它曾经被一些你想摆脱的文本污染。缓冲区将自动重新创建。使用香草 Emacs 有点问题以交互方式执行此操作,但您至少可以使用 M-: (kill-buffer " *Echo Area 0*")
执行此操作(注意 SPC
字符前缀)。)
虽然我不明白为什么以下清除迷你缓冲区:M-! echo ; echo
只要您在 Emacs 中执行任何其他操作,通常会立即清除此输出。但有时 Emacs 会感到困惑,并且消息会不断重新出现在回显区域中。
删除名为 *Shell Command Output*
的缓冲区将解决问题,但当我遇到这种情况时,Emacs 拒绝删除此缓冲区。删除此缓冲区的内容可以解决问题,但下次执行 shell 命令时输出会重新出现在缓冲区中。
您可以通过重命名缓冲区来防止出现该问题。一种方法是使该缓冲区成为当前缓冲区(例如,使用 C-x b
或 M-x switch-to-buffer
)并执行 M-x rename-uniquely
。如果这样做并删除缓冲区的内容,问题就可以避免。
我不知道为什么有时 Emacs 拒绝终止这个缓冲区,但幸运的是它允许重命名它,这样它就不会再用于命令输出。