以前、kill-region-or-backward-kill-word
というのを紹介したが、たとえばcua-mode
ではkill-region
に割り当てられたキーに上位互換のコマンド(cua-cut-region
等)を割り当て直す、といったことをしているので、割り当ては変更せずにkill-region
の挙動を変えてしまう方が都合がいい。
というわけで、adviceを使って書き換えるとこうなる。
1 2 3 4 5 |
(defadvice kill-region (around kill-region-or-backward-kill-word (beg end) activate) (if (and (called-interactively-p 'any) (not mark-active)) (backward-kill-word (prefix-numeric-value current-prefix-arg)) ad-do-it)) |
おまけで、選択モードでないときにM-wが現在行をコピーするようにするのがこれ。(プレフィックスにも対応)
1 2 3 4 5 6 |
(defadvice kill-ring-save (around kill-ring-save-or-copy-line-as-kill (beg end) activate) (interactive (list (point) (mark))) (if (and (called-interactively-p 'any) (not mark-active)) (copy-region-as-kill (point-at-bol 1) (point-at-eol 2)) ad-do-it)) |
Emacsでイラつくことのひとつが行単位のコピー(viならY)の面倒さだが、こういう工夫で乗り越えよう。