cake.vim使い方まとめ

cake.vimは、CakePHPのController、Model、Viewなどの移動を少し楽にするVimのプラグインです。
CakePHP1.3系、 2.0系の両方で動作します。


いろんな移動の方法があるのでcake.vimの操作を一通りまとめてみました。

インストール

プラグインはvim onlineか、githubからダウンロードして解凍し、
cake/以下のファイルを.vim/配下にいれます。


Vundleを使っている方は、

:BundleInstall violetyk/cake.vim

でインストールできます。


設定

必須の設定はありません。
.vimrcにappディレクトリのパスを書いておくと、vimを起動してすぐ使えたり
CakePHPのプロジェクトに関係ないファイルを開いてからもすぐジャンプできるので便利かも知れません。

※cake.vimバージョン2.1までは g:cakephp_auto_set_projectでしたが、バージョン2.2からはg:cakephp_enable_fix_modeに変わりました。

let g:cakephp_enable_fix_mode = 1
let g:cakephp_app = "/path/to/cakephp_app/"

vim起動時に上記のようにCakePHPプロジェクトを固定しない場合は、:Cakephp コマンドでappディレクトリを指定(相対パスも可能)します。

:Cakphp {appディレクトリへのパス}

複数のCakePHPプロジェクトを扱う場合には、自動でCakePHPプロジェクトを設定するモードが便利です。.vimrcに次のように設定します。

let g:cakephp_enable_auto_mode = 1

※cake.vimを使うのにおすすめなキーバインドの設定は、id:takahiro_jinnoさんにcake.vimに任意のキーバインドを割り当てる - takahiro_jinnoの日記で紹介していただきました。


使い方の一覧

  • 各コマンドで指定する引数{controller-name}等は、タブを押すと補完できます。
  • 各コマンドとも上下分割、左右分割、タブで開くことができます。コマンドの後ろに上下分割(〜sp)、左右分割(〜vsp)、タブ(〜tab)をつけて実行して下さい。
例:
" カレントのバッファにコントローラを開く
:Ccontroller {controller-name}
" 上下分割してコントローラを開く
:Ccontrollersp {controller-name}
" 左右分割してコントローラを開く
:Ccontrollervsp {controller-name}
" 新しいタブページにコントローラを開く
:Ccontrollertab {controller-name}
開く対象 コマンド 説明
コントローラ :Ccontroller {controller-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがView/Model/ControllerTestCaseの場合は推測して開く。
モデル :Cmodel {model-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがController/Fixture/ModelTestCaseの場合は推測して開く。
カレントコントローラのビュー :Cview {view-name} {theme-name} {theme-name}はオプション。.vimrcに let g:cakephp_use_theme = "admin" と指定しておくと常にadminテーマ固定。
指定したコントローラのビュー :Ccontrollerview {controller-name} {view-name} {theme-name}
コンフィグ(core.phpやdatabase.phpなど) :Cconfig {config-name} 引数は2つ以上指定可。
コンポーネント :Ccomponent {component-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがComponentTestCaseの場合は推測して開く。
ビヘイビア :Cbehavior {behavior-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがBehaviorTestCaseの場合は推測して開く。
ヘルパー :Chelper {helper-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがHelperTestCaseの場合は推測して開く。
シェル :Cshell {shell-name} 引数は2つ以上指定可。
タスク :Ctask {task-name} 引数は2つ以上指定可。
ログ :Clog {log-name} tail -fのようににログを開く。.vimrcに let g:cakephp_log = {'access': '/usr/local/apache2/logs/access_log'}と書いて対象ログを複数追加可能。
コントローラのテスト :Ctestcontroller {controller-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがControllerの場合は推測して開く。
モデルのテスト :Ctestmodel {model-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがModelの場合は推測して開く。
コンポーネントのテスト :Ctestcomponent {component-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがComponentの場合は推測して開く。
ビヘイビアのテスト :Ctestbehavior {behavior-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがBehaviorの場合は推測して開く。
ヘルパーのテスト :Ctesthelper {helper-name} 引数は2つ以上指定可。引数を指定せずカレントバッファがHelperの場合は推測して開く。
何かしらのテスト :Ctest 引数は無し。カレントバッファから推測して対象のテストを開く。

unite.vimのsource

  • cake.vimはunite.vimのsourceに対応しています。
対象 Uniteコマンド
コントローラ :Unite cake_controller
モデル :Unite cake_model
カレントコントローラのビュー :Unite cake_view
指定したコントローラのビュー :Unite cake_view:{controller-name}
コンフィグ(core.phpやdatabase.phpなど) :Unite cake_config
コンポーネント :Unite cake_component
ビヘイビア :Unite cake_behavior
ヘルパー :Unite cake_helper
シェル :Unite cake_shell
タスク :Unite cake_task
フィクスチャ :Unite cake_fixture

cake.vimの"gf"コマンド

  • ノーマルモードで"gf"と押すと、通常カーソル配下に書いてあるパスを開きますが、CakePHPのプロジェクト内では"gf"は対象のファイルをよしなに開きます。
  • <C-w>fは上下分割で、<C-w>gfだとタブページ分割で開きます。
  • テーマごとに同じファイル名がある場合(ビューやレイアウト、CSSやjsなど)は、選択肢が出ますので、開きたいファイルを選ぶことができます。
コントローラを開いているとき
<?php

class AppController extends Controller {

	// 以下の行にカーソルを当ててgfすると、レイアウトを開きます。
	var $layout = '2column';

	 //以下の行にカーソルを当ててgfすると、対象のビューを開きます。
	function index() {

		// 以下の行にカーソルを当ててgfすると、レイアウトを開きます。
		$this->layout = 'default';

		// 以下の行にカーソルを当ててgfすると、対象のビューを開きます。
		$this->render('xxx');

	}
}
?>
ビューファイルを開いているとき
<?php

// 以下の行にカーソルを当ててgfすると、エレメントを開きます。
$this->element('sidebar/menu');

// 以下の行にカーソルを当ててgfすると、CSSを開きます。
$html->css('style');

// 以下の行にカーソルを当ててgfすると、Javascriptを開きます。
$html->script('jquery');

?>
共通
<?php

// 以下の行にカーソルを当ててgfすると、コンフィグを開きます。
Configure::load('list');

?>
  • また、それ以外で"gf"と押した時、カーソルを当てているキーワードから推測してファイルを開きます。
現在開いているファイル 推測対象(推測順)
コントローラ Model、Behavior、Component、Helper、Controller
モデル Model、Behavior、Controller
ビュー Helper、 Model、 Controller
ビヘイビア Model、 Behavior
コンポーネント Model、 Behavior、 Component、 Controller
ヘルパー Helper、 Controller
シェル Task、 Model
タスク Model
コントローラのテスト Fixture、 Controller
モデルのテスト Fixture、 Model
ビヘイビアのテスト Fixture、 Behavior
コンポーネントのテスト Fixture、 Component
ヘルパーのテスト Fixture、 Helper
フィクスチャ Model