[Emacs]'global-set-key'と'define-key global-map'の違いを知る

'global-set-key'と'define-key global-map'の違いは何でしょうか?

(global-set-key "\C-d" 'delete-char)
(define-key global-map "\C-d" 'delete-char)
上と下は何が違うのでしょうか?

結論: 効果は同じです。

global-set-keyの中身

global-set-keyは、subr.elの中でこのように定義されています。
(define-key (current-global-map) key command))
つまりただのラッパーです。
しいて違いをあげるとすれば、'global-set-key'の方は'interactive'関数なので、手動で M-x global-set-key で呼び出すことができます。
一方、'define-key' はLispプログラム内から使われることが多いようです。

C-h f global-set-key または M-x describe-function RET global-set-key などとすれば、それがdefine-keyのラッパーでしかないことを自分の目で確認できます。
参考
"keyboard shortcuts - What is the difference between `global-set-key` and `define-key global-map` in Emacs - Stack Overflow"
カテゴリ:

人気記事