求教global-set-key 和 bind-key*的区别

如题,请教下两者的区别,这个真的是有点难google出来。。。

bind-key* 是方便用户使用的宏,global-set-key是emacs自带的(也就是说比较老的)function.

bind-keys 可以支持在不同的 map里面定义键位绑定,而且不需要使用者每次用(kbd “C-x C-f”) 这样的macro。

还有用bind-keys 一次绑定多个键位写起来也更方便些。

嗯嗯,谢谢。我其实是想问

(defmacro bind-key* (key-name command &optional predicate)
  "Similar to `bind-key', but overrides any mode-specific bindings."
  `(bind-key ,key-name ,command override-global-map ,predicate))

这里说的override-global-map, but overrides any mode-specific bindings具体是啥意思。

1 个赞

override-global-mapbind-key 这个package弄得一个key map,他的优先级比各个模式的map的优先级要高 好比你 C-c C-c 在不同模式绑定到不同的命令(在各个模式的map里),如果你要统一覆盖成一个命令,可以

(bind-key* "C-c C-c" my-command)

这样就不用在每个模式unbind C-c C-c

2 个赞

原来如此。多谢了,那我直接全改成bind-key*了。