vi派のためのプラグイン

なんだかカッコいいタイトルをつけてますが、お遊びネタです。実用的ではないと思います:)
例えば「管理者がユーザ情報の編集を実行するアクション」を作ろうとして、こんな感じのコマンドを入力したとします。

ethna add-action admin_user_edit_do

で、カレントのディレクトリが/path/to/APPID/template/ja_JP/admin/userだったとします。
実際にファイルを編集しようとすると、

vi ../../../../app/action/Admin/User/Edit/Do.php  

とかやりたくなるんですよね。TABで補完したところでやっぱり面倒だったりするのです。
ディレクトリをさかのぼる間に何のファイルを開こうとしてたか忘れたりするのは自分だけでしょうか:)


実際は、add-actionした際に出力したファイル名が表示されるので、それをコピペすれば済んだりしますが、actionとviewとtemplateを行き来する場合などやっぱりディレクトリをさかのぼってしまいたくなるわけです。

プラグインの使い方

プラグイン導入後に以下のコマンドを叩きます。

ethna source admin_user_edit_do

すると、以下の3つのファイルをvimで同時に開きます。

アクション /path/to/APPID/app/action/Admin/User/Edit/Do.php
ビュー /path/to/APPID/app/view/User/Edit/Do.php
テンプレート /path/to/APPID/template/ja_JP/admin/user/edit/do.tpl

イメージはこんな感じです。

ちなみに分割された窓の移動はCtrl+wを2回押すと順番に移動します。

オプション

プロジェクトのetc配下にあるAPPID-ini.phpに以下の指定を追加することができます。




キーデフォルト値説明
sourceforce_openfalseファイルが無い場合に強制的に開くか
quoteシングルクォート(')ファイル名の前後につけるクォート文字
command
vim %s %s %s
実行するコマンド名
orderarray('action', 'view', 'template')コマンドに渡すファイル名の順番

設定のサンプルは以下となります。

<?php
$config = array(
    'source' => array(
        'force_open' => true,
        'quote' => '"',
        'command' => 'vim -o %s %s %s',
        'order' => array(
            'action', 'view', 'template',
        ),
    ),
);
?>

ちなみにcommandに'vim -O %s %s %s'を指定すると縦に3分割になります。

既知の問題

このプラグインからviを開こうとすると、以下の警告が出力されて1秒弱固まります。もっさりです。
ものすごくイライラするので覚悟しておいてください。

Vim: Warning: Output is not to a terminal

それと、viの画面描写が結構な頻度で乱れます。Ctrl+lを多用することになります。
ものすごくイライラするので覚悟しておいてください。


あと、viじゃなくてvimじゃね?的な突っ込みはやめてください:)

ダウンロード

Ethna 2.5.0のpreview1とpreview2で動作確認してます。


PHP5でしかテストしていません。PHP4で動作したら教えてください:)

ダウンロードEthna_Plugin_Handle_Source.php

インストール

Ethnaのインストール先ディレクトリにある./class/Plugin/Handle/配下にダウンロードしたファイルをコピーしてください。