Emacsでカーソル位置から行頭まで削除する方法
Emacsには、デフォルトでカーソル位置から行頭まで削除(キル)するキーバインドが設定されていません。
C-u 0 C-kとかM-0 C-kでできます*1が、個人的によく使う機能なので1ストロークでいきたいですね。
なんかやり方ないかなーと探していたら、こんな便利なものがあるじゃない!
;; define the function to kill the characters from the cursor
EmacsWiki: Backward Kill Line
;; to the beginning of the current line
(defun backward-kill-line (arg)
"Kill chars backward until encountering the end of a line."
(interactive "p")
(kill-line 0))
これを.emacs.elに貼り付けて、C-S-kにglobal-set-keyします。
;; カーソル位置から行頭まで削除する (defun backward-kill-line (arg) "Kill chars backward until encountering the end of a line." (interactive "p") (kill-line 0)) ;; C-S-kに設定 (global-set-key (kbd "C-S-k") 'backward-kill-line)
設定を保存したら、
M-x load-file .emacs.el
で動くようになります。
Emacsがまた便利になりました!やったね!!!
追記
C-u 0 C-k M-0 C-k
なぜこれで行頭からカーソル位置まで削除できるのかわからなかったので、C-kの引数の取り方について調べてみました。
Emacsでヘルプを参照
C-h k C-k
C-h kで、次に入力したコマンドの解説が表示されます。
一部抜粋:
With prefix argument, kill that many lines from point. Negative arguments kill lines backward. With zero argument, kills the text before point on the current line.
対訳:
先頭に引数を付けると、カーソル位置から複数行をキルできます。 負の引数は後ろの行をキルします。 引数0は、現在行のカーソル位置から後ろをキルします。
なるほど、C-kに与える引数で動作が変わるのか!
*1:なぜこれでできるのかは分からない。