agがとにかく高速で検索できるそうなので今更試してみた。
そしたらすごく速くなった!
ag のインストール
公式の手順が確実です。
https://github.com/ggreer/the_silver_searcher
Mac
$ brew install ag
CentOs
$ rpm -ivh http://swiftsignal.com/packages/centos/6/x86_64/the-silver-searcher-0.14-1.el6.x86_64.rpm
# or
$ rpm -ivh http://swiftsignal.com/packages/centos/6/i386/the-silver-searcher-0.14-1.el6.i686.rpm
Windows
手順通りソースからビルドするか、以下からバイナリを利用させていただく。
The Silver Searcher windows port
http://blog.kowalczyk.info/software/the-silver-searcher-for-windows.html
コマンドから利用
$ ag hoge
オプション(一部)
| オプション | 意味 |
|---|---|
| -a | 無視リストも対象 |
| -u | 隠しファイルおよび無視リストも対象 |
| -g | ファイル名で検索 |
| -G | 検索対象の指定 [ag -G *.css] |
| -l | 一致したファイル名のみ |
| -L | 一致していないファイル名のみ |
| -v | 不一致検索 |
| -Q | 正規表現を無視 |
| -z | 圧縮ファイルも対象 |
無視ファイルリスト
.agignoreで指定可能
vimで利用
ag.vim
.vimrc
NeoBundle 'rking/ag.vim'
コマンド
| コマンド | 結果 |
|---|---|
| :Ag | カレントディレクトリを再帰的に検索して quickfix へ |
| :AgAdd |
:Ag同様だが結果を追加 |
| :AgFromSearch | 前回の検索パターンを使用(/による検索など) |
| :LAg |
:Ag同様だが、結果を location-list へ |
| :LAgAdd |
:AgAdd同様だが、結果を location-list へ |
| :AgFile | ファイル名の検索 |
| :AgHelp | vimのドキュメントが検索対象 |
quickfixでの操作
| コマンド | 内容 |
|---|---|
| e | 開くと同時に終了 |
| o | 開く |
| go | プレビュー |
| t | タブで開く |
| T | タブで開く(silently) |
| h | 水平分割で開く |
| H | 水平分割で開く(silently) |
| v | 垂直分割で開く |
| gv | 垂直分割で開く(silently) |
| q | 終了 |
結果
速い!
Unite.vim と組み合わせる
Unite.vimはインストール済みとして。
.vimrc
" カーソル位置の単語をgrep検索
nnoremap <silent> ,cg :<C-u>Unite grep:. -buffer-name=search-buffer<CR><C-R><C-W>
" unite grep に ag(The Silver Searcher) を使う
if executable('ag')
let g:unite_source_grep_command = 'ag'
let g:unite_source_grep_default_opts = '--nogroup --nocolor --column'
let g:unite_source_grep_recursive_opt = ''
endif
参考:agとUnite.vimで快適高速grep環境を手に入れる - Thinking-megane
結果
速い!
ctrlp.vim と組み合わせる
ctrlp.vimはインストール済みとして。
.vimrc
let g:ctrlp_user_command = 'ag %s -l'
結果
速い!