- bind-key 20161218.1520(in MELPA)
- A simple way to manage personal keybindings
概要
John Wiegley氏謹製 bind-key.el はキー割り当ての
設定関数 define-key を完全に置き換えます。
昨日紹介したuse-package.el の内部で使われています。
これを使うことで以下のメリットがあります。
- 移行がすごい簡単
- 短くなる
- kbd によるEmacs記法が使える(bind-key)
- 個人用に割り当てたキーを列挙できる( M-x describe-personal-keybindings )
- 複数のキーをまとめて割り当てられる(bind-keys)
- メジャーモード・マイナーモードによらない最優先のキーバインドを定義できる(bind-key*, bind-keys*)
難しいことはすべてbind-key.elが請け負ってくれるのが嬉しいです。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてbind-keyを使う方は
以下のコマンドを実行します。
M-x package-install bind-key
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name bind-key
bind-key vs define-key(global-set-key)
では、対比してみましょう。
(global-set-key (kbd "C-c x") 'my-ctrl-c-x-command) ↓ (bind-key "C-c x" 'my-ctrl-c-x-command) (define-key some-other-mode-map (kbd "C-c x") 'my-ctrl-c-x-command) ↓ (bind-key "C-c x" 'my-ctrl-c-x-command some-other-mode-map)
複数のキーをまとめて登録する
重複もこんな感じで回避!
(define-key dired-mode-map "o" 'dired-omit-mode) (define-key dired-mode-map "a" 'some-other-mode-map) ↓ (bind-keys :map dired-mode-map ("o" . dired-omit-mode) ("a" . some-custom-dired-function))
メジャーモード・マイナーモードに依存しないで常に同じキーに割り当てる
仮にC-tにother-windowを割り当てたとすると、
diredだとC-tがプレフィクスキーになってしまい
other-windowが動いてくれません。
このような場合、モードによる上書きよりも
優先度が高いようにする必要があります。
この設定を書くのは minor-mode-map-alist だの
minor-mode-overriding-map-alist だの
emulation-mode-map-alists だの
とてもややこしい問題になってきます。
そんな場合bind-key/bind-keysの代わりに
bind-key* や bind-keys* を使えば解決です。
(bind-key* "C-t" 'other-window)
bind-key/bind-keysで割り当てたキーバインドをリストする
M-x describe-personal-keybindings は
bind-keyなどで個人的に割り当てたキーバインドを
表示してくれます。
たとえば、以下の設定の場合、
(require 'bind-key) (bind-key "C-x C-f" 'ffap) (bind-key "C-c f" 'find-file) (bind-key* "C-t" 'other-window)
このように表示されます。
Key name Command Comments --------- --------------- --------------------- C-t `other-window' was `transpose-chars' C-c f `find-file' C-x C-f `ffap' was `find-file'
他の設定と合わせたい
use-package を使っていれば、自動的に
M-x describe-personal-keybindingsも使えます。
本サイト内の関連パッケージ
- use-package - A use-package declaration for simplifying your .emacs
- emaps - utilities for working with keymaps.
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。