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:
- den korrekten Dateipfad berechnen, dann in die Datei gehen, oder wenn die Datei nicht gefunden, dann
- ausführen ein Tag-Lookup von
ClassName
?
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
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. –
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