2012-03-26 2 views
1

私は、vimのgfコマンドが、他のファイルで参照されているファイルにナビゲートすることを知りました。私は、ファイルは、このようなオートローダーに登録することができますのYii PHPフレームワーク内でこの作業を取得したいよ:それは実際のファイル・パスはありませんので、ClassNamevimの `gf`コマンドをYiiのパスエイリアスに従って再マップすることはできますか?

gfを使用して
Yii::import('path.to.ClassName', true); 

は効果がありません。しかし、それをファイルパス(path/to/ClassName.php)に変換するのは簡単です。 ext.widgets.widgetName.ClassNameどこか、おそらくprotected/extensions/widgets/widgetName/ClassName.phpにエイリアスである

$this->beginWidget('ext.widgets.widgetName.ClassName'); 

また、例えば次のようになりウィジェットを初めとしてパスエイリアスを利用するのYii内の他のメカニズムが存在します。この場合、エイリアスextは実行時にフルパスに展開されるため、vimは完全なファイルパスを知ることができません。

/過負荷のいずれか、それは可能性がPHPプロジェクト内のでgfをリマップする方法があります:

    1. は、そのファイルに移動し、正しいファイルパスを計算する、またはファイルが見つからない場合に実行をタグルックアップClassName
  • 答えて

    3

    :help includeexprを参照してください。 Javaのためにそこに記載されている例では、あなたの目的に合わせかもしれません:

    :set includeexpr=substitute(v:fname,'\\.','/','g') 
    

    より一般的には、:help gfを見た後、私はちょうど:)行ったように(それを制御する設定にジャンプに追随します。

    +1

    Davidさん、ありがとうございます。しかし、エイリアスを使用するファイルパスのYii固有の問題は解決しません。単純に '.'を'/'に置き換えると、ファイルが見つからないというエラーになります。このエラーをトラップする方法を知っていますので、タグ検索を試すことができますか? – bejonbee

    +0

    うーん、そうではありません。珍しい種類のタグ付けが必要になるようです。最低限、実行時拡張機構をvimで利用できるようにする必要がありますが、タグ付けと 'gf'の両方が静的解析に依存しています。 Yiiのソースがすぐに利用できると仮定すると、その目的のためのプラグインまたは外部ツールを作成できます。 –

    +0

    私のプロジェクトでは、「」と入力すると、ctagsを使ってカーソルの下にあるクラス名を効果的に見つけることができます。だから私は、 'gf'がファイルを見つけられなかったときの代替としてctagsを利用したいと考えていました。 – bejonbee

    関連する問題