Emacs で「このキーバインド上書きしたいなぁ」と思うことがよくあって、でも "\C-x" とか (kbd "x") とか "M-
- M-x describe-key して上書きしたいキーバインドに割り当てられてる関数のヘルプをひらく
- そのヘルプのバッファから定義もとのファイルへ飛ぶか M-x find-function 関数名 する
- 定義元のファイルで M-x occur 関数名 して define-key してる箇所をみつける
- define-key の部分を .emacs にコピペして自分の好きな関数を割り当てる
俺の場合、 ns-toggle-fullscreen を M-RET に割り当てたかったんだけど eshell バッファだと eshell-queue-input が呼ばれてしまい、 eshell-mode-hook で上書きしたかったけど M-RET をどう書いたらいいのかわかんなくて、上のやり方でどうにかした。
(global-set-key [(meta return)] 'ns-toggle-fullscreen)
(add-hook 'eshell-mode-hook
'(lambda ()
(progn
(define-key eshell-mode-map "\C-a" 'eshell-bol)
(define-key eshell-mode-map [up] 'previous-line)
(define-key eshell-mode-map [down] 'next-line)
(define-key eshell-mode-map [(meta return)] 'ns-toggle-fullscreen)
)
))
追記
コメントをもらった。 特殊なキーを含むキーバインドを変更したいときの設定方法と調べかた - 刺身☆ブーメランのはてなダイアリー descbinds-anything.el を使うと便利そう。