如何防止迷你缓冲区在Emacs中显示以前的命令?

如何防止迷你缓冲区在Emacs中显示以前的命令?,emacs,minibuffer,Emacs,Minibuffer,我甚至不确定这是以前的命令还是未完成的命令,但我知道我真的不喜欢它 我的问题是,一些命令(或消息,或其他什么)卡在迷你缓冲区中,因此当我键入一个新命令时,它会很快出现在那里,然后迷你缓冲区会返回到顽固的命令。有些命令似乎是被选中的,在使用了很多命令之后,其他一些命令就被卡住了,但是总有一些我不想看到的东西被显示出来。我试着输入C-g很多次,看看它是否会退出,但这不起作用 这是我现在拥有的一张照片: 不管我做什么,那一点都不重要 标签:hl线 我不会离开。当键入新命令时,它确实会立即离开,但会返

我甚至不确定这是以前的命令还是未完成的命令,但我知道我真的不喜欢它

我的问题是,一些命令(或消息,或其他什么)卡在迷你缓冲区中,因此当我键入一个新命令时,它会很快出现在那里,然后迷你缓冲区会返回到顽固的命令。有些命令似乎是被选中的,在使用了很多命令之后,其他一些命令就被卡住了,但是总有一些我不想看到的东西被显示出来。我试着输入C-g很多次,看看它是否会退出,但这不起作用

这是我现在拥有的一张照片:

不管我做什么,那一点都不重要

标签:hl线

我不会离开。当键入新命令时,它确实会立即离开,但会返回。我不喜欢它,它令人困惑,我更愿意看到最后使用的命令

我确实检查了迷你缓冲区的定制选项(在我的照片中可以看到它的底部),但我没有发现任何我想要的东西


有什么想法吗?

迷你缓冲区已失去焦点。尝试C-x-o(控制+x-o)以重新获得焦点。要取消该命令,请在小缓冲区中有焦点时按C-g。

很可能是因为您启动了一个命令并使用鼠标在其他窗口中选择了某个内容,所以您会遇到这种情况。如果是这种情况,您可以让Emacs在执行此类操作时自动中止该命令

这是要添加到.emacs的代码:

(defun stop-using-minibuffer ()
  "kill the minibuffer"
  (when (and (>= (recursion-depth) 1) (active-minibuffer-window))
    (abort-recursive-edit)))

(add-hook 'mouse-leave-buffer-hook 'stop-using-minibuffer)
注意:我从我的电脑上抓到了这个


还有一个超级用户问题解决了这个问题,我的回答提供了一个命令。

哦,这就像一个未完成的命令?我做了C-XO,必须完成所有的命令流(在latex中插入一个环境、放置标签、位置等),这样事情就会消失。谢谢你!很可能是我干的。。。我正在尝试不使用鼠标,所以我希望这个命令很快就会被重复。当我同时使用**C-x b**时,会发生这种情况吗?顺便说一句,我更喜欢你在超级用户问题的答案上添加的代码,并在你的博客帖子的评论中链接:)(这个代码提供了一个键绑定,可以转到活动的minibuffer窗口)@Vivi Ahhh。。。正确答案。我不太高兴苏和苏如何分开Emacs的问题。在这个答案中,我也会把这个链接起来。如果你启动一个命令并得到一个错误条件,就会发生这种情况。将焦点放入迷你缓冲区,然后按Ctrl-G键中止的技巧可以解决这个问题。为什么需要检查递归深度?此外,如果鼠标以外的其他东西改变了焦点,是否有一种等效方法可以工作?您处于(两个级别)递归编辑中,这可以从模式名称周围括号内的[..]]中看出。您可以使用“C-]”中止递归编辑。有关更多信息,请参阅。