今回始めてVimプラグインを作って見たので、宣伝も兼ねて投稿させていただきます。
この記事を読んだ人はぜひ一度使ってみて、何か意見や要望がある方はお知らせしてもらえると嬉しいです。
イントロダクション
Vimでプログラムを書いていると、自分が使っているライブラリのソースコードを確認したくなったり、過去に書いたプログラムを参照したくなったり、その他PDFのドキュメントを開きたくなったりすることがよくあります。そういったときにVimの中から一瞬で目的のファイルを開くことができるような機能が欲しいと思い、プラグインを作成しました。ctrlp-quickref.vimという名前で、その名の通り、CtrlPの機能をベースにした拡張プラグインです。
デモンストレーション
CtrlPのインターフェースを2回続けて利用します。
1回目は自分が登録したパスが表示され、そこから検索したいパスを選択します。
2回目は先ほど選択したパスを検索した結果が表示されるので、後は自分が開きたいファイルを選択するだけです!
使い方
このプラグインをインストールしたら、1回目のCtrlPのインターフェースに表示されるパスを登録しなければなりません。登録する方法は2つあり、1つは自分のvimrcに以下のようにg:ctrlp_quickref_paths変数を作成します。
let g:ctrlp_quickref_paths = [
\ '/directory1/library_or_something_else/src',
\ '/directory2/*/src',
\ '/directory3/*',
" You want to exclude specified directory, put '!' at the head.
\ '! /directory3/library_or_something_else/'
]
複数のパスを登録するためにワイルドカードが使用でき、除外したいパスがあれば"!"を先頭において指定することができます。
2つ目の登録方法は、~/.ctrlp-quickrefファイルを作成し、そこにパスを書き込むというものです。例としては以下のようになります。
# Write
# Some
# Comments
/directory1/library_or_something_else/src
/directory2/*/src
# Additional comment
/directory3/*
# You can also exclude specified directory by writing like this
! /directory3/library_or_something_else
gitignoreなどの構文を意識しています。
上の2つのうちのどちらかの方法でパスを登録したら、後は:CtrlPQuickRefコマンドを実行するだけです。CtrlPインターフェースが開き、自分が登録したパスの中から一つを選択します。再度CtrlPインタフェースが開き、選択したパスにおける検索結果が今度は表示されます。
例
例えば、./ctrlp-quickrefに以下のような内容を記述します。
~/.vim/bundle/*
すると、使っているVimプラグインのパスがすべて指定されたことになり、そのすべてのソースコードに簡単にアクセスすることが出来るようになります。Vimスクリプトを書いている時には便利だと思います。また、
~/projects/*
のように、自分のプロジェクトを保存しているディレクトリを指定すると、すべてのプロジェクトのソースコードやドキュメントを即座に見ることができます。
コマンド
-
:CtrlPQuickRef
CtrlPのインタフェースを開き、自分が登録したパスを選択肢として表示します。
-
:CtrlPQuickRefLastDir
CtrlPを、自分が最後に選択したパスを引数として実行します。
-
:CtrlPQuickRefEdit
自分のパスを登録しているファイル(デフォルトでは~/.ctrlp-quickref)を開きます
。自分のvimrcに全て登録している場合は何も起こりません。
オプション
-
ctrlp_quickref_readonly_enabled
デフォルトではreadonlyフラグをつけてファイルを開きますが、この変数の値を0にするとreadonlyフラグをつけずにファイルを開くことができます。
-
ctrlp_quickref_open_extensions
このリストに含まれている拡張子のファイルを開く場合は、Macではopen、Linuxではxdg-openで自動的に開かれます。デフォルトでは['html', 'pdf']となっています。
-
ctrlp_quickref_configuration_file
パスを登録するファイルを指定します。デフォルトでは~/.ctrlp-quickrefです。
-
ctrlp_quickref_paths
パスの登録をvimrc内で行う場合、この変数にリストとして登録します。
必要なプラグインなど
-
xdg-open command (Linuxユーザのみ)
-
これは不可欠ではありませんが、大きなプロジェクトなどに適用する場合には絞り込みが早くなるのでおすすめです。
-
これも不可欠ではありません。CtrlPユーザの多くが使っているかもしれませんが、おすすめしておきます。