前置き
先日ctrlp-quickref.vimという自作プラグインについて投稿しました。このプラグインは既に開発が止まっていますが、その後継として新しいプロジェクトをスタートし、そろそろ形になってきたのでまた投稿したいと思います。後継プラグインの名前はctrlproj.vimとしました。
少しでも興味を持った方は一度使用してみて、何かバグや改善案などがありましたらQiitaやGithubを通じてお知らせくださると嬉しいです。
イントロダクション
このCtrlprojと言う名前は"CtrlP + Project"の略称で、CtrlPを使ったプロジェクト管理の機能を提供するためのプラグインです。EmacsにおけるProjectileとHelmのような機能を、このCtrlprojとCtrlPによって実現しようと目論んでいます。現在、このCtrlprojには以下のような機能が実装されています。
- 複数のプロジェクト間を移動する
- 同じファイル名で異なる拡張子を持つファイルどうしを切り替える (例 .h<->.c/.cpp)
- ソースコードとそのテストどうしを切り替える
- 現在のプロジェクトに属するバッファをすべて削除する
- 他のプロジェクトの中のファイルを瞬時に開く(ctrlp-quickrefからの機能)
既存のCtrlPに、これらの機能を追加することになります。
使い方
プラグインをインストールしたらまず、プロジェクトやライブラリなどのパスをファイル~/.vim/.ctrlproj
または変数g:ctrlproj_paths
に登録しなければなりません。もしファイルに登録したいなら、次のように記述してください。
# Write
# Some
# Comments
/path/to/specified/project
# Additional comment
/path/to/specified/directory/*
# You can also exclude specified directory by writing like this
! /path/to/project/you/want/to/exclude
変数に登録したい場合は、次のように自分のvimrcに記述してください。
let g:ctrlproj_paths = [
\ '/path/to/specified/project',
\ '/path/to/specified/directory/*',
" You want to exclude specified directory, put '!' at the head.
\ '! /path/to/project/you/want/to/exclude'
]
以上で初期設定は終わりで、:Ctrlproj
コマンドを実行すると、次のように登録したパスを選択肢としてCtrlPのインタフェースが現れます。
ここでどのキーを使って選択するかで、その後の動作が決まります。
- もし
<enter>
を使ったなら、選択されたディレクトリにおいてもう一度CtrlPのインタフェースが現れます。 - もし
<c-t>
を使ったなら、現在のプロジェクトに属するバッファをすべて削除し、選択されたディレクトリにカレントディレクトリを移動します。 - もし
<c-v>
を使ったなら、バッファを削除することなくカレントディレクトリを移動します。 - もし
<c-x>
を使ったなら、デフォルトのファイルエクスプローラを選択されたディレクトリで起動します。
そして、Ctrlprojが提供する他の機能についても説明します。
:CtrlprojLastDir
最後に選択されたディレクトリにおいてCtrlPインタフェースを起動します。
:CtrlprojEdit
パスを登録したファイルを開きます。
:CtrlprojAlternate
カレントバッファに対して、同じファイル名で違う拡張子をもつファイルを開きます。
:CtrlprojSwitch
カレントバッファに対して、ソースとテストを切り替えます。
:CtrlprojRemoveBuffers
カレントプロジェクトに属するバッファをすべて削除します。
オプション
g:ctrlproj_readonly_enabled
この値を0に設定すると、他のプロジェクトのファイルを開くときにリードオンリーフラグを追加しなくなる(デフォルトでは1)。
g:ctrlproj_open_extensions
このリストに含まれる拡張子をもつファイルは、Linuxではxdg-open、Macではopenなどのコマンドによって開かれる(デフォルトでは['html', 'pdf'])。
g:ctrlproj_configuration_file
パスを登録するファイルを指します(デフォルトでは'~/.vim/.ctrproj')。
g:ctrlproj_paths
このリストにもパスを登録することができる(デフォルトでは[])。
必要なプラグインなど
- ctrlp.vim
- xdg-open(Linuxユーザのみ)
- ctrlp-py-matcher(不可欠ではありませんが、推奨します)
- the_silver_searcher(これも不可欠ではありませんが、推奨します)