Vimでシステム開発 — Lookupfile Plugin
ファイルの開くについて、Vimは「:find」コマンドがありますが、あまり便利ではないと思います。ファイルが多い場合、検索が遅くなります。また、ファイルのフルネームを入力しなければならない、正規表現は使えないのです。
Vim標準のファイル・エクスプローラであるnetrwも紹介しました、netrwはフォルダ・エクスプロー時が便利です。ただし、すでに名前または名前の一部が分かっているファイルの場合、netrwは効率が高いと言えないでしょう。
ファイル名の一部を入力すれば、該当するファイル一覧を表示して、選択できるような機能がずっとほしかったのです。
ここで登場するのはlookupfileプラグインです。lookupfileは私が求めていたプラグインです。このプラグインを投票する時、私は「Life Changing」を選びました。
- インストール
http://www.vim.org/scripts/script.php?script_id=1581 から、lookupfileプラグインをダウンロードします。
lookupfileのバージョン1.6からは、Vim 7.1が必須となっています。私のLinuxはデフォルトがVim 7.0です。Vim 7.1をコンパイルして見たが、Vim 7.1のGUIフォントについて、私が好きなIPAゴシックが利用できなかったため、やめました。結局、lookupfileの1.4版をインストールし ました。
ダウンロードしたファイルを~/.vim フォルダに解凍します(Windowsの場合は$VIM/vimfilesまたは$HOME/vimfiles)。Vimから「:helptags ~/.vim/doc」コマンドを実行し、ヘルプを生成します。これで「:help lookupfile」でlookupfileのヘルプを表示できます。
また、lookupfileを動かすにはgenutilsプラグインが必要となります。http://www.vim.org/scripts/script.php?script_id=197 からダウンロードし、~/.vim フォルダに解凍します。
続いては、lookupfileの使用について紹介します。名前はlookupfileですが、このプラグインはファイル以外も、バッファとフォルダなどの検索もできます。
- ファイル、バッファとフォルダの検索
lookupfileはファイルを検索時、tagファイルが必要です。前回紹介した「ctags」コマンドで生成したtagファイルも利用できますが、速度が遅い。ですから、プロジェクトのファイル一覧のtagファイルを作ればいい。
例えば、私は以下のシェルを使って、Vim 7.1 のソースのtagファイルを作成します。
# generate tag file for lookupfile plugin
echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/" > filenametags
find . -not -regex ’.*\.\(png\|gif\)’ -type f -printf "%f\t%p\t1\n" | \
sort -f >> filenametags
※シェルの内容について、前回の Vimでシステム開発 — tagファイルとtaglistプラグイン(その1) を参考してください。
~/src/vim71 の下にこのシェルを実行すれば、~src/vim71 の全てのファイル名とファイルのあるフォルダを含む、filenametags というtagファイルが作れます。
tagファイルが出来たら、次はlookupfileを設定します。Vimで実行します。
:cd ~/src/vim70
:let g:LookupFile_TagExpr = ’"./filenametags"’
※g:LookupFile_TagExprオプションが設定されていない場合、lookupfileはデフォルトtagsオプションが設定された値をtagファイルとします。
以上で準備が完了しました。lookupfileでファイルを開いて見てみましょう。<F5>、または「:Lookupfile」でlookupfileウィンドを画面トップ部に開きます。そこにファイル名の一部を入力すると、マッチしたファイルの一覧が表示します。もちろん、正規表現も対応します。矢印キーでファイルを選んで、Enterを押せばファイルが開きます。
以下はlookupfileを使ってファイルを検索するの例です。:Lookupfile

画面トップのウィンドはlookupfileです、そこに「gui」を入力します、マッチしたファイルが一覧が表示され、選んだファイルにEnterを押すとファイルが開いて、lookupfileウィンドも閉じます。
lookupfileはファイル以外のほかの機能があります、よく使うのはバッファとフォルダの検索です。
| :LUBufs | バッファ検索 |
| :LUWalk | フォルダ検索 |
- 設定
自分の編集習慣と合せてlookupfileのオプションを設定します。私のvimrcには以下のように設定しています。
こう設定することで、「,lk」を入力した場合、指定のtagファイルを利用してファイルの検索を行います。「,lt」で新しいタブでファイルを検索します。検索時、大文字と小文字を区別しません。
関連ヘルプ





