Emacsでリージョン内を置換

Emacsでリージョン内の文字列を置換する方法をご紹介します。ついでに、リージョン内だけではなく、ファイル全体を対象とした置換方法もご紹介します。

リージョン内の置換方法

  1. .emacsに(setq transient-mark-mode t)を追加
  2. リージョンを指定する

対話的な置換の場合は

  1. M-%
  2. 置換前の文字列を入力 RET
  3. 置換後の文字列を入力 RET
  4. y で次々置換する。

一括で置換

  1. M-x replace-string RET
  2. 置換前の文字列を入力 RET
  3. 置換後の文字列を入力 RET

リージョン内を置換するために

リージョン内を置換するためには、transient-mark-mode(暫定マークモード)を起動する必要があります。transient-mark-mode(暫定マークモード)を起動するためには、新たに拡張機能をインストールする必要はなく、.emacsに(setq transient-mark-mode t)を追加して保存するだけです。

transient-mark-mode(暫定マークモード)をonにすれば、リージョンを指定している間に置換すれば、それはリージョン内のみに適応されます。

transient-mark-mode(暫定マークモード)は、リージョン内の置換を実現するだけではなく、リージョン指定部分の色を反転させるという機能があります。これは、メモ帳などの、選択範囲と同じような動作です。

マクロで複数のマクロを置換する

置換を適応させたい部分が離れている場合、2回、もしくは複数回置換のリージョンを選択して、置換コマンドを実行する必要があります。ただし、リージョンの選択はしなくてはいけないものの、マクロを利用することによって、置換コマンドは省略することができます。

マクロは C-x ( でマクロ記録開始。C-x ) でマクロ記録終了です。最新のマクロを実行するには、C-x eを押すだけです。

まずは、リージョンを選択してから、マクロを記録開始。次に置換コマンドを実行してから、マクロ記録を終了してください。残りの適応範囲は、リージョンを選択して、C-x eだけで同様の置換を行うことができます。