2011年2月7日月曜日

Emacsの正規表現置換で使えるカウンタ、そして省略形

正規表現置換を行うコマンド、つまりreplace-regexpquery-replace-regexpquery-replace-regexp-evalにはカウンタが組み込まれており、replace-countという名前で参照することができる。これを利用すると、「letter: Emacs 番号をふる。query-replace-regexp-eval が便利」で紹介されているような作業が楽に行える。

※参照先の記事ではquery-replace-regexp-evalを使用しているが、Emacsのヘルプを確認したところ"This function is obsolete since 22.1"と書かれていた。だから、新し目のEmacsの場合はquery-replace-regexp-evalの代わりにquery-replace-regexpを使い、置換後の文字列の所に\,を指定するようにする。

(query-replace-regexp-eval REGEXP TO-EXPR &optional DELIMITED START END)

This function is obsolete since 22.1;
for interactive use, use the special `\,' feature of
`query-replace-regexp' instead.

replace-count の省略形: \#

ヘルプに書いてあることだが、replace-count と同じ意味を表すのに \# が使える。

これを利用すると、

aaa
bbb
ccc

1. aaa
2. bbb
3. ccc

へ置換するためのコマンドは次のようになる。

M-x query-replace-regexp[Enter] または M-x replace-regexp[Enter]
^[Enter]
(format "%d. " \,(1+ \#))[Enter]

少しだけキータイプの量が減らせたよ、と。

0 件のコメント:

コメントを投稿