2010年8月19日木曜日

Emacsで指定した正規表現が現れる場所までkillする

C-hやC-dを連打するのに疲れたので、タイトルどおりのEmacs Lisp関数を作ってみた。 M-dなどをうまく駆使すれば連打の必要はなかったのかもしれないけれど。

実は組み込みで求めている機能がある、なんてことはないと信じたい。

(defun kill-to-regexp-forward (regexp)
(interactive "sRegexp:")
(let ((start-point (point)))
(when (re-search-forward regexp nil t)
(re-search-backward regexp nil t)
(kill-region start-point (point)))))

(defun kill-to-regexp-backward (regexp)
(interactive "sRegexp:")
(let ((start-point (point)))
(when (re-search-backward regexp nil t)
(re-search-forward regexp nil t)
(kill-region (point) start-point))))

現状、正規表現にマッチした部分は切り取らないようにしている。使ってみて、マッチした部分も消したほうが便利そうなら変更しようと思う.

0 件のコメント:

コメントを投稿