2012-03-26 4 views
1

Ich habe gerade von vim gf Befehl zum Navigieren zu Dateien, die in anderen Dateien, wie z. B. c enthält verwiesen verwiesen. Ich will diese Arbeit innerhalb des Yü-PHP-Framework bekommen, wo Dateien können wie dies mit dem Autoloader registriert werden:Kann ich den `gf`-Befehl von vim neu zuordnen, um Yi's Pfad-Aliasen zu folgen?

Yii::import('path.to.ClassName', true); 

Mit gf auf ClassName hat keine Wirkung, weil es nicht der wirkliche Dateipfad ist. Es wäre jedoch einfach genug, es in den Dateipfad zu übersetzen, der path/to/ClassName.php ist.

Darüber hinaus gibt es andere Mechanismen innerhalb Yü, die Pfad-Aliase verwenden, wie zum Beispiel ein Widget begining, die wie folgt aussieht:

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

Wo ext.widgets.widgetName.ClassName einen Alias ​​irgendwo, vielleicht protected/extensions/widgets/widgetName/ClassName.php. In diesem Fall wird der Aliasname ext zur Laufzeit auf den vollständigen Pfad erweitert, sodass vim den vollständigen Dateipfad nicht kennen kann.

Gibt es eine Möglichkeit/zu überlasten gf Neuzuordnung so innerhalb eines PHP-Projektes könnte es entweder:

  1. den korrekten Dateipfad berechnen, dann in die Datei gehen, oder wenn die Datei nicht gefunden, dann
  2. ausführen ein Tag-Lookup von ClassName?

Antwort

3

Siehe :help includeexpr. Das Beispiel dort aufgeführten für Java könnten Ihre Zwecke anpassen:

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

Allgemeiner :help gf finden und dann die Sprünge zu den Einstellungen folgen, die es zu kontrollieren (wie ich gerade :) tat.

+1

Danke David, das ist hilfreich. Es löst jedoch nicht das Yii-spezifische Problem von Dateipfaden, die Aliase verwenden, wobei das einfache Ersetzen von '.' durch'/'zu einem Fehler bei der Datei nicht gefunden führt. Weißt du, wie man diesen Fehler auffängt, damit ich dann eine Tag-Suche ausprobieren kann? – bejonbee

+0

Hmm, nein ich nicht. Es scheint, als wäre eine ungewöhnliche Art von Tagging erforderlich. Zumindest müssten Sie den Laufzeit-Erweiterungsmechanismus für vim verfügbar machen, während sowohl Tagging als auch 'gf' auf statischer Analyse beruhen. Angenommen, Sie haben die Quelle von Yii sofort verfügbar, könnten Sie wahrscheinlich ein Plugin oder ein externes Tool für diesen Zweck schreiben. –

+0

In meinem Projekt wird die Eingabe von '' effektiv den Klassennamen unter dem Cursor mit Ctags finden. Also hoffte ich, Ctags als Fallback zu verwenden, wenn 'gf' die Datei nicht finden konnte. – bejonbee

Verwandte Themen