Emacsのキーバインドを書き換える手順のメモ

久しぶりにEmacsキーバインドを書き換えようといたら忘れていたのでメモしておく

describe-modeを使う

M-x describe-mode で 現在のメジャー・マイナー双方のモードに対応したキーアサインを見ることができる。リファレンス的にも使える、というかメインの機能はたぶんそっち。
自分が欲しい機能を持つコマンドに対し検索をかけ、呼び出しているメソッド名をコピーしておく。

グローバルにセットする場合

(define-key global-map (kbd "M-q") 'hoge)

M-q に 'hogeをひっかける。
行儀がいい書き方か知らないけど、とりあえず動くのでこれでいいや

モード対して設定する場合

(add-hook 'c-mode-hook
          (lambda ()
          ;; ここに設定を追加していく
            (setq tab-width 4)
            (define-key c-mode-base-map "\C-m" 'newline-and-indent)
            ))

これでいいんだろうか。

elscreenを火狐ぽくタブ切り替え

FirefoxみたいにCmd + option + 左右 でelscreenのタブを切り替えるサンプル。要 require 'elscreen

(define-key global-map (kbd "<A-M-right>") 'elscreen-next)
(define-key global-map (kbd "<A-M-left>") 'elscreen-previous)
(define-key global-map (kbd "<A-M-up>") 'elscreen-create)
(define-key global-map (kbd "<A-M-down>") 'elscreen-kill)

Cmd + option + UP で新タブを生成
Cmd + option + down で現在のタブを閉じる

コマンドにUP やRIGHT , tabが含まれる場合はメタキー含めて<>で閉じる必要があるみたいだ。


参考:Meadow/Emacs memo: モードとキーバインドの基礎と Elisp