Emacs文本卡在迷你缓冲区中

Emacs文本卡在迷你缓冲区中,emacs,minibuffer,Emacs,Minibuffer,我正在使用GNU Emacs 24.4.1(编辑:也可以在24.5.1中看到)。一些来自vc模式的旧输出(我认为)出现在minibuffer中: Auto-merging foo/bar Auto-merging foo/bar CONFLICT (content): Merge conflict in foo/bar 我现在没有做任何版本控制操作,但是这个文本被困在迷你缓冲区中。按C-g键将其短暂替换为退出,但在下一次击键时返回 它不是什么:它不是递归编辑。C-]或中止递归编辑给出错误没有

我正在使用GNU Emacs 24.4.1(编辑:也可以在24.5.1中看到)。一些来自vc模式的旧输出(我认为)出现在minibuffer中:

Auto-merging foo/bar
Auto-merging foo/bar
CONFLICT (content): Merge conflict in foo/bar
我现在没有做任何版本控制操作,但是这个文本被困在迷你缓冲区中。按C-g键将其短暂替换为退出,但在下一次击键时返回

它不是什么:它不是递归编辑。C-]或
中止递归编辑
给出错误
没有进行递归编辑
并且小缓冲区中的笨拙文本仍然存在

它不是用鼠标选择的文本,因为我在一个没有鼠标支持的文本控制台(通过ssh的GNU屏幕会话)中运行

我尝试了从中的
切换到minibuffer
命令,但出现了错误
minibuffer未激活
。然而,这种令人尴尬的文本仍不断出现

这不是屏幕大小问题(因为Emacs不知道终端窗口的正确大小,所以文本过时),因为我可以调整终端窗口的大小,Emacs可以正确地调整大小。。。文本仍显示在小缓冲区中

有时,我在minibuffer中看到两行或多行文本的这种效果。事实上,我当前的Emacs会话在一个屏幕中的一个客户端会话(
EmacClient-nw
)中显示了该会话,而主会话仅显示一行。客户端会话在minibuffer中显示了几行版本控制代码:

Auto-merging foo/bar
Auto-merging foo/bar
CONFLICT (content): Merge conflict in foo/bar

如何使其消失?

如果点击
C-g
终止正在运行的shell命令,则可能会发生这种情况。这将使minibuffer窗口指向
*Shell命令输出*
缓冲区

如中所述,您可以通过调用暂存缓冲区中的
(迷你缓冲区窗口)
来检查是否发生了这种情况:

(minibuffer-window)
#<window 2 on *Shell Command Output*>

这一问题已在中解决,并作为Emacs 26.1的一部分发布。

假设:即使移动光标、键入文本等,文本仍会保留。文本是否显示在
*消息*
缓冲区中?您是否尝试过
M-:(无消息)
?看看这是否能解决问题?谢谢-下次发生这种情况时,我会试试你的建议。奇怪的是,自从升级到emacs 24.5.1之后,这种情况就没有发生过……不,文本没有显示在
*消息*
中。它是
*Shell命令输出*
的一个片段,已卡在微型缓冲区中。执行
M-:(message nil)
在minibuffer中打印
nil
,但随后返回显示shell输出的片段。我发现清除它的方法是
M-!echo
。实际上,我的Shell命令输出窗口在执行此操作后被卡住了。这篇文章有一个对我有用的完整解决方案:谢谢,很可能就是它(或者是一个密切相关的bug)。正如您所说,它在最新的Emacs版本中似乎是固定的。