Helm-agで高速にファイル検索できて感動したのでインストール手順をメモしておきます.
間違いなどあれば指摘していただけると幸いです.
[環境] Windows7/Cygwin/GNU Emacs24.3
ag.exeの作成
準備(Shift-JIS,EUC-JPの対応)
ag (the silver searcher)はutf-8のテキストファイルしか検索してくれません.
Shift-JISやEUC-JPのテキストファイルも対象に含むようにパッチをあてたVerがありました.
ag(The Silver Searcher)でEUC-JP/Shift-JISのファイルも検索できるようにしてみた - Thinking-megane
しかし,ビルドが通りませんでした….
改修点はsrc/util.*のみのようなので,src/util.*を,masterプロジェクトへ差し替えてmasterプロジェクトをビルドしました.
monochromegane/the_silver_searcher at detect-japanese-char-set · GitHub
↑こちらからsrc/util.cとsrc/util.hをコピー
ggreer/the_silver_searcher · GitHub
masterのプロジェクトをcloneしてコピーしたファイルを差し替え
ビルド
cygwinを起動し,the silver searcherのディレクトリへ移動して,build.shを実行.
cd the_silver_searcher
./build.sh
ビルド終了後、生成されたag.exeをcygwin/binにコピー.
cp ./ag.exe /bin/
↓ビルドが通らない場合,こちらのページが参考になるかと思います
Windows Cygwin環境のThe Silver Searcher(ag.exe)ビルド方法 - GeekなNooblog
Emacsの設定
emacsでag.exeのパスを通す
emacsでM-x getenv pathを実行し、pathの値にC:\cygein\bin;が含まれて無ければ.emacsに/cygwin/binディレクトリをpathに追加するコードを追加します
;;/cygwin/binをパスを通す
(setenv "PATH" ("C:\cygein\bin;" (getenv "PATH")))
helm-ag.elを取得
cygwinで次のコマンドを実行します.
git clone https://github.com/syohex/emacs-helm-ag.git
.emacsにhelm-agの設定を追加
;必要であればload-pathにhelm-agディレクトリを追加
;(add-to-list 'load-path "C:\Dropbox/.emacs.d/elisp/emacs-helm-ag")
(require 'helm-config)
(require 'helm-files)
(require 'helm-ag)
; agのデフォルトのコマンドオプションを指定
; -nを消すとサブディレクトリも再帰的に検索します
(setq helm-ag-base-command "ag --nocolor --nogroup -n")
;Alt+sでag実行
(define-key global-map [(M s)] 'helm-ag)
動作イメージ
Dired上で M-s → "ag --nocolor --nogroup -n する" を実行した結果.
ファイル内検索の場合はM-x helm-ag-this-fileを利用しましょう.
気になる点
Diredバッファの文字コードがutf-8なので,
"ag --nocolor --nogroup -n する"
の"する"はutf-8です.
(検索コマンドの文字コードは,カレントバッファの文字コードを引き継ぐようです)
そのためこの場合Shif-JISやEUC-JPファイル内の"する"はヒットしません.
その他の文字コードで検索したい場合は,C-x RET f(または M-x set-buffer-file-coding-system RET)でカレントバッファの文字コードを変更→再度helm-agを実行する必要があります.
#参考
helm-ag作者の方のページ.ありがとうございます
helm-agを書きました - Life is very short