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

时间:2010-06-11 12:58:27

标签: emacs minibuffer

我甚至不确定这是先前的命令还是未完成的命令或其他什么,但我确实知道我真的不喜欢它。

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

这是我现在所拥有的图片:

alt text

无论我做什么,那一点

  

标签:hl-line

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

我确实检查了迷你缓冲区的自定义选项(它的底部部分可以在我的图片中看到),但我发现没有任何东西看起来像我在寻找。

有什么想法吗?

2 个答案:

答案 0 :(得分:15)

您可能会遇到这种情况,因为您启动了一个命令并使用鼠标在不同的窗口中选择了某些内容。如果是这种情况,您可以让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)

注意:我从我的blog post on the topic抓住了这个。

还有一个超级用户问题解决了这个问题,我在那里的答案为jump back to the minibuffer提供了一个命令。

答案 1 :(得分:10)

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