はじめに
Emacsの Ctrl-h にはもともと「ヘルプ」が割り当てられているが, Backspaceと同じ1文字削除に割り当て直すのが定番である.
以前は下記のようにグローバルで設定していた.
~/.emacs.d/init.el
(global-set-key "\C-h" #'delete-backward-char)
しかしモードによっては, delete-char系の専用関数が用意されてる場合もあるため, 全モードで delete-backward-char にしてしまうのが微妙だった.
Ctrl-h再考
今回 Doom Emacs の導入を機に, モードやステート別に Ctrl-h を割り当てるようにした.
~/.doom.d/config.el
(map! :e
"C-h" #'delete-backward-char ; Emacsステートではdelete-backward-charにしておく
:map minibuffer-local-map
"C-h" #'delete-backward-char
:map isearch-mode-map
"C-h" #'isearch-delete-char ; インクリメンタルサーチ中の専用delete-char
)
(setq! evil-want-C-h-delete t) ; insertステートでCtrl-hを1文字削除にする
(map! :after evil
:map (
evil-ex-completion-map
evil-ex-search-keymap
)
"C-h" #'evil-ex-delete-backward-char ; exコマンドの専用delete-char
)
;; デフォルトのvertico-directory-upが使いづらいので上書き
(map! :after vertico
:map vertico-map
"C-h" #'vertico-directory-delete-char
)
参考: 各モード専用の delete-char 系の変数関数の説明
バージョン情報
emacs-version => "30.2"
doom-version => "3.0.0-pre"
evil-version => "1.15.0"