emacsで一括検索と一括置換

emacs での通常の編集作業に検索と置換がある. インクルメンタル検索は便利であるが,しばしば一括検索して, 一括置換したい時がある. 標準ではバッファーの一括検索に M-x occur をつかい, 一括変換に M-%M-C-% を用いる.

これを複数のバッファーやファイルに拡張することが先人たちによって考えられた. 一つの到達点は, color-moccur + moccur+edit であろう. 詳しくは

http://qiita.com/icb54615/items/e5fd73e03323f3d8f7bc
http://d.hatena.ne.jp/higepon/20061226/1167098839

を. (2つめの前半に wdired も紹介してありこれも導入すべきである.) わたしの init.el の設定ファイルは

;; color-moccur  (ELPA)
(require 'color-moccur)
(global-set-key (kbd "M-o") 'occur-by-moccur)
(setq moccur-split-word t)
(setq moccur-use-migemo t)

;; moccur-edit
(require 'moccur-edit)

である. 普段のoccur検索は M-o とする. インクルメンタル検索中に気が変わって, 一括検索したくても, M-o とする. 複数ファイルについての grep検索は M-x moccur-grep-find で実行する. 検索結果バッファで r で編集モードに, C-x C-s で保存して終了, C-x C-k で保存せずに終了する.

作者が日本人なので, migemo 検察に対応している. また複数の単語を検索できる. color-moccur はELPAから入手できるが, moccur+edit はELPAから入手できない. 以下から入手する必要がある.

http://www.bookshelf.jp/elc/moccur-edit.el

また, lispだけで作られており, それはwindowsなどgrepが導入されていない時にも使えるというメリットと同時に, ちょっと遅いというデメリットでもある.

早さを求めるなら, OSにgrepがあるのならそれを使うと良いだろう. 標準で M-x grep で実行可能である. grepの検索結果を一括変換したいなら, wgrep をELPAからダウンロードして, init.el

(require 'wgrep)
(setq wgrep-enable-key "r")

を付け加える. M-x grep で検索し, 検索結果バッファで r で編集モードに, C-x C-s で保存して終了, C-x C-k で保存せずに終了する.

そうすると検索速度はちょっとはやくなる. ただ, migemo検索はできないので, color-moccurと併用すればよいだろう.

grepより, 早い検索をもとめるなら, OSにackやagを導入すればよいだろう. 導入は, homebrew なら,

brew install ag

でOK. さらに, ELPAから agwgrep-ag を導入する. 設定ファイルは

http://yukihr.github.io/blog/2013/12/18/emacs-ag-wgrep-for-code-grep-search

を参考, というか前半をほとんどコピペすれば

;; ag
(require 'ag)
(custom-set-variables
 '(ag-highlight-search t)  ; 検索結果の中の検索語をハイライトする
 '(ag-reuse-window 'nil)   ; 現在のウィンドウを検索結果表示に使う
 '(ag-reuse-buffers 'nil)) ; 現在のバッファを検索結果表示に使う
(require 'wgrep-ag)
(autoload 'wgrep-ag-setup "wgrep-ag")
(add-hook 'ag-mode-hook 'wgrep-ag-setup)
(define-key ag-mode-map (kbd "r") 'wgrep-change-to-wgrep-mode)

である. M-x ag で検索し, 検索結果バッファで r で編集モードに, C-x C-s で保存して終了, C-x C-k で保存せずに終了する.

投稿者: kenjimyzk カテゴリー: computer

emacsで一括検索と一括置換」への1件のコメント

  1. ピンバック: spacemacs の使い方 (検索) | miyazakikenji

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中