Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした