1. C-BackSpaceで文字が消えすぎる?
macOSでEmacs(emacs-plus)を使っていると、うっかりC-BackSpaceを押してしまい、想定以上に文字が消えることがあります(分割キーボード上で、BackSpaceがHの隣にあるので)。
これは、C-BackSpaceが、backward-kill-wordに割り当てられていたからでした1。
とくに、単語単位で消えるだけでなく、kill-ringまで汚れてしまうので、あとでyankしたときにちょっと困ります2。
そこで、「最初からBackSpaceとして解釈させる」ほうが安全ではないか、と思いました。
init.elのkey-translation-mapを使い、C-DELをDELに変換しました。
;; C-DELで backward-kill-word を使わない(誤作動防止)
(when (eq system-type 'darwin)
(global-set-key (kbd "C-<backspace>") #'delete-backward-char)
;; 保険
(global-set-key (kbd "C-DEL") #'delete-backward-char))Code language: PHP (php)
これでC-BackSpaceを押しても、1文字削除になるだけです。
killは発生せず、kill-ringも汚れません。
もちろん、単語削除を多用する人には向かないかもしれません。
- Emacsでは
backward-kill-word(M-DEL)とbackward-kill-sentence(C-x DEL)など、複数のkillコマンドが存在します。これらはすべてkill-ringに保存されるため、yankで復元可能です。 – GNU Emacs Manual: Deletion and Killing - kill-ringは削除したテキストの履歴を保持する仕組みです。
C-yでyank(貼り付け)後、M-yで履歴を遡ることができますが、意図しない削除が混入すると操作が煩雑になります。 – GNU Emacs Manual: Yanking