Emacs での一括検索・一括置換まとめ

  • 49
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

一括検索・置換のようなことをやろうとすると、
moccurall.el といったキーワードはすぐに検索に引っかかるけれども、
まとまった記述を見つけられなかったので、
ここに改めてまとめてみることにした。

参考リンク

シチュエーション別

カレントバッファ

occur

Emacs 24.1 以降の occur には編集機能がそもそも備わっているようなので、
あらためて拡張を入れる必要はない。

occur バッファで e を入力すると編集モードに移行する(occur-edit-mode)。
他のメジャーな拡張と異なる挙動として、編集内容はそのまま元のバッファに反映されている。
C-c C-c で編集を終了する(occur-cease-edit)。

color-moccur + moccur-edit

color-moccur には occur-by-moccur という、
カレントバッファを対象に moccur を実行する機能があるので、
そちらを利用するという手もある。
個人的には、操作性の統一という面でこちらを使ったほうがいいと思う。

具体的な操作は「全バッファ」の項の color-moccur + moccur-edit と同じものが使える。

全バッファ

color-moccur + moccur-edit

M-x moccur の結果バッファで r を押すと、編集可能になる。

編集を反映させるには C-c C-c、破棄するには C-c C-k を入力する。

編集を反映させても、直ちにファイルに変更が書き込まれるわけではなく、
該当ファイルのバッファに変更内容が反映されるのみ。

適宜 save-some-buffers(デフォルトは C-x s)を実行する等で変更を保存する必要がある。

ファイル

agwgrep-ag の組み合わせが最も使いやすいと思う。

aggrep の結果バッファで C-c C-p (変更可)を押すと、編集可能になる。

編集を反映させるには C-c C-c、破棄するには C-c C-k を入力する。

編集を反映させても、直ちにファイルに変更が書き込まれるわけではなく、
該当ファイルのバッファに変更内容が反映されるのみ。

ファイル・ディレクトリ名

wdired が使える。

dired バッファで r を押すと編集可能になる。

ファイルやディレクトリのリネームはもちろん、
ファイル名に任意の相対・絶対パスを追加することで、移動も可能である。

編集を反映させるには C-c C-c、破棄するには C-c C-k を入力する。

こちらの編集は 即座にファイルシステムに反映される。

実際の設定例

occurmoccur については、検索結果をリアルタイムで見られるように、helm インタフェースを使うように設定して使っている。

isearch で検索していたが一覧で見たくなったので、
helm-moccur で該当箇所を確認し、
編集したくなったら moccur バッファを開く、というようなフローを実現できるように設定している。

occur, moccur 関連

wgrep 関連

wdired 関連