cake.vimでModelのテーブル構造を確認する
cake.vimのバージョン2.6で、モデルのテーブル定義を瞬時に確認できるよう、:Cdescコマンドを追加してみました。
(cake.vimはCakePHPのController、Model、View間の移動を少し楽にするプラグインです。コチラのエントリーで使い方をまとめてみました。)
キャプチャ
こんな感じです。
※上のキャプチャには、PHP版Redmine、CandyCaneのIssuesControllerをつかわせていただきました。
カーソルは$usesの'User'上にいて、usersテーブルのテーブル定義を下に開いています。
使い方
内部的にdbext.vimのコマンドを実行しているので、dbext.vimをインストールします。
次に、.vimrcなどにDBの接続設定を書きます。
パスワードが@askになっているは、べた書きせず、コマンドを実行してDBに接続するときに入力するためです。
" let g:dbext_default_type = 'MYSQL' " let g:dbext_default_user = 'root' " let g:dbext_default_password = '@ask' " let g:dbext_default_host = 'localhost' " let g:dbext_default_dbname = 'candycane' " let g:dbext_default_buffer_lines = '20'
上記の設定はcake.vim2.7以降は必要なくなりました。自動的にモデルとdatabase.phpをパースして、接続するようにしました。
そしてコマンドモードで、以下のように{model-name}の箇所にモデル名を指定すると、モデルの使っているテーブル定義が引けます。
引数を入力するときにTABを押すと、モデル名の補完できます。
:Cdesc {model-name}
引数を指定しないでエンターを押すと、カーソル配下の単語が:Cdescの対象となります。
キーバインドを設定しておくと、楽です。
nnoremap <Space>cd :<C-u>Cdesc
内部的に呼んでいるdbext.vimについて
dbext.vimはvimからSQLを実行できる、凄いプラグインです。
dbext.vim
- dbext.vim - Provides database access to many DBMS (Oracle, Sybase, Microsoft, MySQL, DBI,..) : vim online
- vim-scripts/dbext.vim · GitHub
dbext.vimの使い方についてはコチラで詳しく解説されています。
課題
DB接続の設定しなくてもdatabase.phpをパースして自動でやるのと、
Modelの$useTablesが設定されている場合にも対応できたらなぁ。。。