vim-users.jp

Hack #111: neocomplcache Hacks(1) ファイル名補完

Posted at 2009/12/23
このエントリーをはてなブックマークに追加

neocomplcache Hacksでは、neocomplcacheの機能を詳細に解説していきます。一回目の今回はファイル名補完です。一見地味な補完ですが、うまく活用すると非常に便利です。

ファイル名補完とは

ファイル名補完とは、Vim組み込みで用意されているファイル名補完を置き換えるためにneocomplcache上で実装した補完です。Ver.3.0より機能が分離され、neocomplcacheの1プラグインとなっています。を解析して候補を出すため、組み込みのファイル名補完と同じように動作しますが、機能が大幅に拡張されています。特にファイル名を指定するときや、シェル拡張系のプラグインを使用するときに効果を発揮します。

inoremap <expr><C-x><C-f>  neocomplcache#manual_filename_complete()

私はこのようにキーマッピングを設定し、Vim組み込みのファイル名補完を置き換えています。

拡張機能

neocomplcacheのファイル名補完には次のような拡張機能があります。

ワイルドカードに対応

*.txtのような、ワイルドカード文字が補完に使えます。 実行ファイル、読み取り専用ファイル、ディレクトリの表示 表示をわかりやすくするため、ファイルの種類を判別し、実行ファイルには*を、読み取り専用ファイルには[-]を、ディレクトリには/をそれぞれ付加します。 Windowsでは$PATHEXTを参照するので、より正確な判別が可能です。

短縮ファイル名補完

/u/s/lのようにディレクトリの先頭名だけ入力することで、/u*/s*/lのように解釈されます。素早く補完したいときに便利ですが、候補が多いと重くなります。

補完スキップ

g:NeoComplCache_EnableSkipCompletionが1ならば(デフォルト)、ファイル名の取得に時間がかかりすぎる場合、補完をスキップすることができます。

Cygwin対応

Vim組み込みのファイル名補完では/cygdrive/の入力で補完が重くなってしまいますが、neocomplcacheのファイル名補完では対策されています。

…->../..変換

…を../..に変換して解釈することができます。上のディレクトリを参照するときに便利です。

_, -, .による区切り補完

_, -, .を区切り文字として曖昧補完ができます。たとえば、h_.txtはh_.txtと同じ意味です。

環境変数を展開しない

組み込みのファイル名補完の場合、環境変数が勝手に展開されてしまうので、逆に邪魔になってしまうことが多々あります。neocomplcacheのファイル名補完は環境変数とマッチする部分はそのままにするので、便利に使うことができます。

zshとの比較

neocomplcacheのファイル名補完は自動的に候補が表示できるのが一番の魅力で、特にvimshellとの連携はすばらしいです。zshでも設定すれば自動補完ができないことはないのですが、誤爆の可能性も高く、おすすめできません。自動でファイル名補完ができることに慣れてしまうと、いちいち<TAB>を連打しなくてはいけないシェルの補完が煩わしく感じることでしょう。

vimshellとの併用

neocomplcacheのファイル名補完は元々vimshell上で利用するために作られました。vimshellとはVim上でシェルを実装したプラグインです。neocomplcacheとは独立していますが、neocomplcacheがインストールされている場合、補完時にneocomplcacheの機能を使用します。vimshellはneocomplcacheと比較しても複雑なプラグインなので、機会があれば詳しく解説したいと思います。

Shougo

もどる
blog comments powered by Disqus