[Emacs]正規表現置換でマッチした文字列を置換時に再利用する方法

os.ubuntu
os.debian
os.centos

などを、

os.linux.ubuntu
os.linux.debian
os.linux.centos

に一発で置換したいときは、どのようにしますか?

replace-regexpを使うとできます。
M-x replace-regexp RET os.\([a-z]+\)  RET os.linux.\1
\(~\)で囲ったものを、後で\1で参照することができます。
応用編
$this->af->setApp('aa', $x->hoge());
$this->af->setApp('bb', $y->fuga());
$this->af->setApp('cc', $z->piyo());
↑このようなメソッド呼び出しを、↓のような連想配列の代入に書き換えたい
$ary['aa'] = $x->hoge();
$ary['bb'] = $y->fuga();
$ary['cc'] = $z->piyo();
M-x replace-regexp RET $this->af->setApp('\(.+\)'[,\ ]+\($.+\)); RET $ary['\1'] = \2;
一発で決まると非常に気持ちがいいですね。
これで、リファクタリングの速度が速くなりそうです。
カテゴリ:

人気記事