vimの便利なPlugin(その10)ack.vim

   2017/05/01

vimでファイル検索をする場合、quickfixを使っている方も多いと思いますが、ack.vimはvimgrepとquickfix windowをラップして簡単に使えるようにした便利Pluginです。ack自体はgrepのような検索ツールで、vim用のツールという分けではありません。 ackはPerlで記述されているためPerlの正規表現が使えるメリットがありますが、実行速度のめんでいまいちでした。 2013年のころからackを高速にした「The Silver Searcher(ag)」というツールが注目を集めましたが、現在は更に機能改善されたhighwayというツールがでてきており、(その7)ではunite.vimからhighwayを利用する方法とhighwayのインストール方法を記載しました。 今回は、vimからhighwayを叩いて簡単にvimgrepできるack.vimの使い方を紹介します。

Install

今回もdein.vimを前提とさせていただきます。 まだ、dein.vimを使っていない方は(その5)から。

.vimrcにいかの行を追加します。

call dein#add('mileszs/ack.vim')

これで「:call dein#install()」をコマンドラインモードで実行すればインストールは終了。

使い方

まずは、.vimrcに設定をいれてみます。

if executable('hw')
  let g:ackprg = "hw"
endif

設定の詳細は、「:help Ack」で確認して見て下さい。 vimでファイルをオープンしてある文字列検索を試してみた結果こちら。(※wordpressのソースファイルがカレントディレクトリ直下に置いてあります。)

ack_disp

Exモードから「:Ack 検索対象文字列」を入力して実行すると、カレントディレクトリ配下のファイルを再帰的に検索して下部ウィンドウに結果のリストを表示します。 下部ウィンドウ内でファイルを選択すると上部ウィンドウでファイルがオープンされヒットした文字列でカーソルが止まります。同じ事をvimgrepとquickfixでやると以下のコマンドを実行することになります。再帰的にディレクトリを検索していくために「**」とquickfixでウィンドウを開くために「| cw」を入力します。

:vimgrep 検索対象文字列 ** | cw

同じ結果を得るのに、ack.vimを利用すると入力しなければいけない文字列はかなり少なくてすみます。 また実行速度は、vimgrepよりはかなり高速です。

 

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら