my-kill-line
emacs の kill-line には元々「行頭〜ポイントを kill」という動作があるそうだ。
Emacsでカーソル位置から行頭まで削除する方法 - はてブロ@ama_ch
xyzzy でもあるんかなと調べたら、同様に C-u 0 C-k でいけるっぽい。C-u 0 も M-0 もめんどいのに C-u C-k が C-u 4 C-k 扱いされる必要を感じないので C-u C-k で「行頭〜ポイントを kill」にしておいた。*1
(defun my-kill-line (&optional arg) (interactive "*p") (if arg (let ((*prefix-value* (if (eql *prefix-args* 'universal-argument) 0 *prefix-value*))) (call-interactively 'kill-line)) (multiple-value-bind (from to) ;; 以下略
以下略んとこは
- C-a の後なら1行丸ごと
- eolp なら次の行のインデント(空白)まで
- 現在の行のインデント部分にポイントがあれば1行丸ごと
とかなんかそんなことしてる。
生の kill-line 使うなら
(defun kill-line-wrapper (&optional arg) (interactive "*p") (let ((*prefix-value (if (eql *prefix-args* 'universal-argument) 0 *prefix-value*))) (call-interactively 'kill-line)))
でいいのかな。
でも行頭で C-u C-k したら前の行が殺されるのはちょっとビビった。慣れると便利なのかもしれないのでそのままにしておいてみる。