LoginSignup
48

More than 5 years have passed since last update.

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

Posted at

はじめに

一括検索・置換のようなことをやろうとすると、
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 関連

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48