the_silver_searcherを使って快適vim grep生活を送る

hatappi.hateblo.jp

上でも書いたように最近自宅の開発環境をUbuntuにしたりとOSが違うが出来るだけ吸収出来るようにしている。
リポジトリは下記で管理している。

github.com

今回はVimの話題。
最近ちゃんと?vimを使うようになって開発でも使用しているけど、小さなプロジェクトなら良いけど大きめのプロジェクトをいじる時に困ったことが。

grep遅い

ファイル内でgrepなら良いけどプロジェクト内のファイルを横断的にgrepする時にDenite grepを使っていると待つことがあってこれをスムーズにやりたい欲求が出てきた。

調べてみると下記のThe Silver Searcherというものが早いらしい。

github.com

The Silver Searcher(Ag)とは??

ackに似たコードgrepして検索するためのツールでCで実装されている。
このAgはサイト内でもackとの速度面で早いよと行っていて、READMEとかには34xだぜのようなことも書いてある。
※ グラフ付きで比較とかもしている => Geoff's site: The Silver Searcher Speed Graphs

そんなに早いなら使ってみようと思ったのですが、出来れば今のDeinを使う上でコマンドは変えたくなかったので、既存のgrep時のコメンドをAgで上書きする方法を取りました。

作業内容

Agのインストール自体は各環境コマンド一発で入るので楽です。 参考
次にDenite grepで使用するコマンドを上書きするためにvimrcを変更します。

" .vimrc

" ag setting
call denite#custom#var('file_rec', 'command', ['ag', '--follow', '--nocolor', '--nogroup', '-g', ''])
call denite#custom#var('grep', 'command', ['ag'])
call denite#custom#var('grep', 'default_opts', ['-i', '--vimgrep'])
call denite#custom#var('grep', 'recursive_opts', [])
call denite#custom#var('grep', 'pattern_opt', [])
call denite#custom#var('grep', 'separator', ['--'])
call denite#custom#var('grep', 'final_opts', [])

grep時のコマンドを変えるために call denite#custom#var('grep', 'command', ['ag'])を入れました。
またついでにファイル検索時もagを使うようにcall denite#custom#var('file_rec', 'command', ['ag', '--follow', '--nocolor', '--nogroup', '-g', ''])を追加して対応させました。

作業自体のPRは下記でやってます。
github.com

快適になったー