somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】キーの入れ替え

emacs内部で、あるキーを別のキーにする方法のメモです。

キーのいれかえ

下記のようにして入れかえることができます。

(keyboard-translate ?\C-h ?\C-?)

C-?はバックスペースです。つまり、C-hにelispの関数を実行するように割り当てるのではなく、単純にバックスペースにするためelispで割り当てたC-hの処理に依存しません。

おまけ

削除できないミニバッファへの上記以外の解決方法があったのでメモしておきます。

isearch時のミニバッファで文字を削除できるようにする設定です。isearch-modeのキーマップに設定しているだけですが、isearch-mode用の削除があるようです。

(define-key isearch-mode-map (kbd "C-h") 'isearch-delete-char)

anything時のミニバッファで文字を削除できるようにする設定です。こちらもanythingのキーmapに設定しているだけですが、eval-after-loadを使用しています。この場合、anythingが存在しない場合は何もおきません。また、 loadされる前でも問題なく、loadされてから処理内容が評価されるので、安全になります。

(eval-after-load "anything"
  '(define-key anything-map (kbd "C-h") 'delete-backward-char))

参考