LoginSignup
17
16

More than 5 years have passed since last update.

EmacsでC-hでmini buffer内でもbackspaceする

Posted at

結論

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-eeval-last-sexpしたらちゃんと動いた)。

ちょっとこれの原因が分からなくて、EmacsのMLでバグっぽい空気は感じたけど結局解決方法は分からず。

で、もうちょっと調べたところ一番最初の(define-key key-translation-map (kbd "C-h") (kbd "<DEL>"))すればいいよ、というのを見つけてやってみたらビンゴだった。

参考

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16