LoginSignup
23
23

More than 5 years have passed since last update.

helm-agで高速検索 (GNU Emacs/Cygwin)

Last updated at Posted at 2014-02-03

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に追加するコードを追加します

.emacs
;;/cygwin/binをパスを通す
(setenv "PATH" ("C:\cygein\bin;" (getenv "PATH")))

helm-ag.elを取得

cygwinで次のコマンドを実行します.
bash:
git clone https://github.com/syohex/emacs-helm-ag.git

.emacsにhelm-agの設定を追加

helm-ag_sample.el
;必要であれば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 する" を実行した結果.

ScreenShot00053.png

ファイル内検索の場合は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

23
23
0

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
23
23