Emacs 中“define-key global-map”和“global-set-key”的区别

Ame*_*ina 10 emacs

看看人们如何在 Emacs 中编写键盘快捷键,我注意到两种不同的模式:

一种用途:

(global-set-key (kbd "M-N) 'select-next-window)
Run Code Online (Sandbox Code Playgroud)

另一个:

(define-key global-map (kbd "M-N") 'select-next-window)
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?他们不是都在 Emacs 中定义了“全局”键盘快捷键吗?

Ulr*_*arz 5

在主要情况下似乎没有太大区别:

  • (global-set-key key command)归结为(define-key (current-global-map) key command)), 和
  • describe-var告诉我们global-map“是一个键映射,通常(但不一定)是 Emacs 的全局映射”,而
  • (current-global-map) “返回当前的全局键盘映射”。

但是,Emacs 文档谈到了“全局键盘映射”,因此不清楚您是如何遇到多个全局键盘映射的(如果有的话)。

  • 全局键盘映射由`use-global-map` 设置。这样做的包并不多:主要是一些模拟模式,例如 Viper,以及一些临时覆盖全局映射的函数,例如 `read-char`。 (2认同)