CakePHP用のvimプラグイン、『cake.vim』を作ってみた。

※追記:こちらのエントリーでインストールから使い方までをまとめてみました。



CakePHPのController、Model、View間の移動を少し楽にするプラグインです。


自分でCakePHPで開発しているときに、ジャンプできたら便利だな−。と前々から思っていたのですが
探してもなかなか見つからなかったので、Vimスクリプトの勉強を兼ねてつくってみました。

インストール

violetyk/cake.vim · GitHub
cake.vim - Utility for CakePHP developers. : vim online
vim onlineまたはgithubからダウンロードして、.vim/以下で解凍後してください。

簡単な使い方

" 最初にCakePHPのルートの設定
:Cakephp /path/to/cakephp_root/

" コントローラ hogehoges_controller.php を開く
:Ccontroller hogehoges

" ビュー index.ctpを開く(hogehoges_controller.phpがカレントバッファで開いているときに)
:Cview index
" テーマ「mytheme」を指定して開く
:Cview index mytheme

" モデル hogehoge.php を開く
:Cmodel hogehoge

説明

Cakephp コマンドで、最初にCakePHPのルートの場所を指定します。

:Cakephp /path/to/cakephp_root/

※cake.vim 1.2からは、appディレクトリを指定するようにして下さい。

:Cakephp /path/to/cakephp_app/

または、すでに/path/to/cakephp_root/ にいる場合は、

:Cakephp .

この作業がめんどくさい場合は、.vimrcに設定しておきます。

" vim起動時に自動でCakePHPのルートを設定をする場合 1
let g:cakephp_auto_set_project = 1
" cake.vim1.1までの場合
" let g:cakephp_root = "/path/to/cakephp_root/"
" cake.vim1.2以上の場合
let g:cakephp_app = "/path/to/cakephp_app/"

:Ccontroller {コントローラ名}

コントローラファイルを開きます。
例えば、members_controller.phpを開く場合はこうです。

:Ccontroller members

引数は、コントローラ名です。タブを押せば補完できます。
指定したコントローラが無い場合は、ファイルを作るかどうかダイアログがでます。
Yもしくはそのままエンターでファイルを作成できます。

:Ccontroller hogehoge
[cake.vim] /path/to/cakephp_root/app/controllers/hogehoge_controller.php is not found. Do you make a file ?
[Y]es, (N)o:

viewファイルをカレントバッファに開いているときに、:Controllerを引数なしで実行すると、
開いているviewファイルからコントローラ名を推測して開きます。

縦横分割して開く場合は:Ccontrollersp :Ccontrollervspを使います。

" 横分割してmembers_controller.phpを開く
:Ccontrollersp members
" 縦に分割してmembers_controller.phpを開く
:Ccontrollervsp members

:Cview {ビュー名} {テーマ名(オプション)}

コントローラファイルを開いているときに、ビューファイルを開きます。

例えば、index.ctpを開く場合はこうです。

:Cview index

タブを押せば補完できます。指定したファイルが無い場合はファイルを作るかどうかダイアログがでます。
Yもしくはそのままエンターでファイルを作成できます。

毎度テーマ名を入力するのがめんどくさい場合は、.vimrcに設定しておきます。

let g:cakephp_use_theme = "admin"

こうしておくと、つぎの場合にthemed/admin/index.ctpが開きます。

:Cview index

縦横分割して開く場合は:Cviewsp :Cviewvspを使います。

" 横分割してindex.ctpを開く
:Cviewsp index
" 縦に分割してindex.ctpを開く
:Cviewvsp index

:Cmodel {モデル名}

モデルファイルを開きます。

例えば、member.phpを開く場合はこうです。

:Cmodel member

タブを押せば補完できます。指定したファイルが無い場合はファイルを作るかどうかダイアログがでます。
Yもしくはそのままエンターでファイルを作成できます。

コントローラファイルをカレントバッファに開いているときに、:Cmodelを引数なしで実行すると、
開いているコントローラファイルからモデル名を推測して開きます。

縦横分割して開く場合は:Cmodelsp :Cmodelvspを使います。

" 横分割してmember.phpを開く
:Cmodelsp member
" 縦に分割してmember.phpを開く
:Cmodelvsp member


キーバインドを割り当てると便利かもしれません。
こんな感じで設定して使っています。

nnoremap <Space>cc :Ccontroller 
nnoremap <Space>cm :Cmodel 
nnoremap <Space>cv :Cview 

※各行の最後は半角スペースが入っています。


今回、初めてVimスクリプトを書いてみました。
最初はバッファの開き方も分からないところからスタートしましたが、
ヘルプといつもお世話になっているプラグインおかげでvimスクリプトの勉強ができました。


とりあえずプラグイン本体だけできたので、
ヘルプを書いてみたいと思います。