Emacsを便利に使うための提案(語のkill・マーク編)

前回 に引き続き,今回は語の操作に関する提案である.

M-f や M-d などの語の操作は C-f や C-d の1字の操作に対応しているが, C-h が元々ヘルプであったためか,M-h に関しては,大半の人が C-h に設定しているであろう delete-backward-char との対応が取れていない.そこで,1つ目に M-h を「カーソルより前の語を削除」に変更することを提案する.

(global-set-key (kbd "M-h") 'backward-kill-word)

M-h はもともと mark-paragraph だ.私は使用していないので気にしないが,これをよく使用するのであれば, C-* と M-* の対応関係を考えると mark-paragraph の方を別のキーに移動させるのが適当だろう.

2つ目の提案は,語のマークである.語をマークするコマンドとして M-@ がある.これは何度も押すことで複数の単語をマークできて非常に便利だが, M-d と同様にカーソルより後ろの語しかマークしない.カーソル位置の語全体がリージョンする場合は, M-b で語の先頭にカーソルを移動してから M-@ を入力する必要がある.

カーソル位置の語全体を copy や cut したいこともよくあるので,そのためのキーを用意しよう.キーは C-@ を使用することにする. C-@ を使用しても C-SPC と同じなので問題ない.

さて,カーソル位置の語全体のマークをどのように実現するかであるが,残念なことに Emacs に標準では用意されていない(それっぽい名前の関数 mark-word は M-@ の機能だ).そこで, リージョン選択(松山智大) — ありえるえりあ で紹介されている thing-opt を使用する.

thing-opt.el をパスが通ったところにダウンロードし,.emacs

(require 'thing-opt)
(define-thing-commands)

と記述すると,カーソル位置の語全体のマークする mark-word* が提供される.これを C-@ に割り当てればよい.

(global-set-key (kbd "C-@") 'mark-word*)

この提案に賛同してもらえるかどうかはわからないが, M-h や C-@ のような押しやすいキーを活用しないのは非常にもったいない. mark-paragraph や M-@ によるマークを使用しないのであれば,少しでも自分が使用する可能性の高いコマンドに変更することをオススメする.