怎么去掉点击状态栏,打开MessageBuffer的行为?

点击状态栏这里会打开MessageBuffer。

我现在显示器摆放的方式,很容易误触这里。所以想去掉这个行为。

谢谢大家!

用这一句:

(define-key minibuffer-inactive-mode-map (kbd "<mouse-1>") nil)

看下面 @xuchunyang 的答案,有详细的解释。

1 个赞

使用 C-h k (describe-key) 找到相应的绑定(按键的名称、所在的 keymap、绑定的命令),然后解除它。

比如我按下 C-h k 点击状态栏下方 会提示(我去掉了一些明显无关的内容)

<mouse-1> at that spot runs the command view-echo-area-messages (found
in minibuffer-inactive-mode-map), which is an interactive compiled
Lisp function in `help.el'.

It is bound to C-h e, <f1> e, <help> e.

(view-echo-area-messages)

可以发现

  • 鼠标点击这个按键名字是<mouse-1>
  • 绑定的是命令 view-echo-area-messages
  • 所在的 keymap 是 minibuffer-inactive-mode-map

于是解除这个绑定(Emacs 里没有直接解除绑定的功能,而是通过绑定至 nil 达到同样的目的)

(define-key minibuffer-inactive-mode-map (kbd "<mouse-1>") nil)

上面的方法适用于所有的 Emacs 的按键。

在别的地方,你一般只能知道这个按钮的功能,而在 Emacs 这里,你还可以把按钮拆开来,看看它是如何工作的、修改它的功能。对于一个程序,理解它的源代码,就能理解它的工作原理,甚至修改它的功能。在 Emacs 这里,这一步变得比较容易 (describe-key / find-function-on-key) 。因此使用 Emacs 有助于对程序祛魅。

5 个赞

谢谢 @et2010@xuchunyang

学习了很多。:+1: