Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@hal0223

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

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
23
Help us understand the problem. What are the problem?