cake.vim最近の改善5つ
最近、cake.vimのバージョンを2.10としてGitHubにpushしました。vimonlineにもアップしました。
そのなかの、2012年後半からやっていた改善5つを紹介します。
gfコマンドの縦分割版コマンドを追加した
ノーマルモードの時にgfと押すと、通常vimはカーソル配下に書かれたファイルパスを開こうとしますが、cake.vimではカーソル配下の記述からよしなに対象のクラスやファイルを開きます。そのあたりはcake.vim使い方まとめ - yuhei.kagayaに詳しく書いています。
gfの代わりに<C-w>fで上下分割、<C-w>gfでタブページ分割で開きますが、
gsと押して縦分割で開けるようにしました。
キーバインドを変更するには、.vimrcなどに次のように設定します。
" Ctrl-w gsで縦分割 let g:cakephp_keybind_vsplit_gf = '<C-w>gs'
gfでジャンプできるパターンが増えた
以下のように、gfでジャンプできるようになりました。
<?php // 以下の行でgfと押すと、HogeController::fuga()へジャンプします。 array('controller' => 'Hoge', 'action' => 'fuga') // 以下の行でgfと押すと、HogeController::admin_fuga()へジャンプします。 array('controller' => 'Hoge', 'action' => 'fuga', 'admin' => true)
アプリケーションのルーティングが一覧で定義してあるapp/config/routes.phpなどで便利です。
App::build()で追加したパスにジャンプできるようになった
アプリケーションディレクトリ直下に.cakeというファイルを作成し、次のようにJSON形式でビルドパスを書いておくと、
追加先のクラスにもジャンプできます。
{ "build_path": { "models": [ "/full/path/to/models/", "/next/full/path/to/models/" ], "components": [ "/full/path/to/components/", "/next/full/path/to/components/" ], "helpers": [ "/full/path/to/helpers/", "/next/full/path/to/helpers/" ] }, "cake" : "/path/to/another_cakephp_core/" }
.cakeではないファイル名にする場合には.vimrcなどで次のように設定します。
let g:cakephp_app_config_file = '.project'
CakePHPのコアディレクトリの場所はデフォルトでアプリケーションディレクトリと同じ階層にあるものとして認識しますが、そうでないパスにある場合などは.vimrcなどに次のように設定します。
let g:cakephp_core_path = '/path/to/cakephp_core/'
アプリケーションごとに違う場所にCakePHPコアディレクトリがある場合には、g:cakephp_core_pathではなく上記の.cakeのように書いておくと便利です。
:Cviewコマンドを強化した
Cviewコマンドは、必ず第一引数にビュー名をとっていましたが(TABでビュー名の入力補完可能)、
第一引数を省略した場合、カーソルがあるカレント行に対応するビューファイルへジャンプするようになりました。
<?php class ContentsController extends AppController { public function index() { // ここで:Cviewコマンドを引数なしで実行すると、indexビューへジャンプします }
gfでジャンプするときと同様、テーマビューを使っていて複数のジャンプ候補がある時には選択肢が出るので、
数字を選んでください。
:Cview Which file do you jump to? (1): Contents/index.ctp, (2): Themed/admin/Contents/index.ctp: