結論
init.elに以下を追加
(define-key key-translation-map (kbd "C-h") (kbd "<DEL>"))
あとがき
EmacsでC-hでbackspaceする、となったらよく以下の行をinit.elに追加する、というのが紹介される
(define-key global-map "\C-h" 'delete-backward-char)
ただ、これだとmini buffer内でC-hしてもbackspaceしてくれない。ので、今までEmacsの中からではなく、Karabinerを使ってOSでグローバルにC-hをdelete keyに割り当てていた。
ただ最近iTermのシェル上でdelete keyが効かなくなった。で、このiTermのシェル上でbackspaceするのはどうすればいいのかぐぐると、delete keyにC-hを割り当てる的なエントリが出てくる。これだと本末転倒だ。
で、iTermのシェル上でdelete keyを使うのは諦めて、大人しくC-hを使うことにしたんだけど、そうするとEmacsでC-hでbackspaceするにはどうすればいいのか、というのが問題になった。
前述のとおり(define-key global-map "\C-h" 'delete-backward-char)
はmini bufferできかないのでつらい。で、ぐぐるとinit.elに以下を追加するとmini bufferでもC-hでbackspace出来るよー、というのが出てきた。
(keyboard-translate ?\C-h ?\C-?)
ただ、自分の環境だとinit.elを読み込んだ時に上記命令が上手く実行されないようだった(C-x C-e
でeval-last-sexp
したらちゃんと動いた)。
ちょっとこれの原因が分からなくて、EmacsのMLでバグっぽい空気は感じたけど結局解決方法は分からず。
で、もうちょっと調べたところ一番最初の(define-key key-translation-map (kbd "C-h") (kbd "<DEL>"))
すればいいよ、というのを見つけてやってみたらビンゴだった。