Emacs 22 における置換コマンドの変更点
nanasi さんが紹介してくれたサイトを自分なりに噛み砕いてみる.
そのサイトには, 分かり易い例が載ってたので, それを試してみた.
このエントリは, そのメモ.
全部, 転載すんのは気が引けるので, 必要な部分だけを.
まず, Emacs 22 では, query-replace-regexp や replace-regexp が高機能化されましたよ, と.
そして, その高機能化された点をサイトでは, 6つの例で説明してる.
- Example: Changing Case in Replacement Strings
- Example: Numbering Lists
- Example: Re-numbering Lists
- Example: Alphabetically Numbered Lists
- Some Even Snazzier Examples
- Example: Heading-Tag Promotion/Demotion
Emacs 22 での新しい表現が紹介されてる部分のみをメモろうかな.
さすがに全部は, わるい気もするし.
ということで, ここでは, 最初の2つを.
残りの4つは, 上手い使い方の紹介, かな.
そこも読んでみたけど, 驚きが多かった. ナンバリングを数値からアルファベットにするとか.
Example: Changing Case in Replacement Strings
「置換文字列の状態, 大文字小文字とか?を変更する」って訳せばいいのかな.
M-x replace-regexp を使って, 置換文字列のある文字の状態を変更できるようになったとのこと.
ここでは, 単語の先頭を大文字にする例を載せてる.
M-x replace-regexp Replace regexp: \(\w+\) Replace regexp with: \,(capitalize \1)
最初の正規表現は, 単語のみを抽出するということ.
2番目のが置き換え文字列.
lisp 関数 capitalize を呼出している. \1 は, capitalize を適用する文字列.
Ruby だと $1 とかに当たるもので, ここでは, 正規表現にマッチした単語ってことかな.
このように, 置き換え文字列の先頭に \, を使うことで,
lisp 式を使えるようになったというの1番目みたい.
すげえ.
ちなみに, capitalize は, interactive な関数じゃない.
ってことは, 全部の関数が使えるってことなのかな.
Example: Numbering Lists
「リストの数え上げ」でいいのかな.
新しい置換評価機能では, 番号付きのリストを作成することが容易になったとのこと.
Emacs 22 は, 逆参照メタキャラクタ \# を持っていて,
それは, 私たちが今までのところ, 現在のコマンドでした置換の数をカウントするものである, と.
サイトで紹介されてる正規表現は, こんな感じ.
M-x replace-regexp Replace regexp: \(.+:\) Replace regexp with \#.
これは, 頭から「:」までの文字列を「番号. 」の形に変更する式.
これは, もしかしなくても, すごく便利そう.
例えば, こんなの↓があってさ. 頭に行番号をつけたいとする.
aa bb cc cc ee
その場合は, こいつをリージョンに入れて, replace-regexp 「^」, \#: で望みどおりになる.
こんな感じに.
0:aa 1:bb 2:cc 3:cc 4:ee
これ, ものすごく使いそう. うん.
更新時刻
2007年02時21分0:37