2013-03-15 19 views
6

Ich brauche Hilfe beim Einrichten von Ctags, Jsctags und Tagbar, damit ich eine bearbeitbare Javascript Bearbeitungsumgebung haben kann. Ich habe alles installiert, aber ich konnte mir nicht vorstellen, wie Ctags und Jsctags zusammenarbeiten, also weiß ich nicht, wie ich richtig konfigurieren soll. Ich habe ziemlich viel Google gemacht, aber die Informationen sind ziemlich kaputt und es mangelt an Konsistenz. Ich habe einen Fehler ähnlich dem Beitrag, ctags and tagbar configuration are out of sync. Ich bin auf OS X Berglöwe und iterm2.ctags, jsctags/doctorjs, Tagbar Schritt für Schritt

Jede Hilfe würde sehr geschätzt werden. Eine Schritt-für-Schritt-Anleitung wäre hervorragend.

Thx.

Antwort

5

Zuerst müssen Sie verstehen, dass jsctags und ctags wahrscheinlich nie synchron sein werden. Selbst wenn Sie nur eine einfache Funktion haben, können beide Programme leicht unterschiedliche Informationen ausgeben. Daher ist es ratsam, einen anderen, aber nicht beide zu verwenden: oder.

Zweitens muss AFAIK, TagBar nicht für die Verwendung von Jsctags anstelle von Ctags konfiguriert werden. Wenn Sie JavaScript verwenden, wird es standardmäßig auf jsctags eingestellt, wenn es verfügbar ist. TagBar sollte sich nicht beschweren, wenn Sie ein funktionierendes jsctags haben.

Drittens, für seine eigenen Tag-bezogenen Funktionen (:tag, :tselect, <C-]>, etc.), Vim verlässt sich nur auf das Vorhandensein von einer oder mehreren physikalischen tags Dateien. Ob diese Dateien von ctags, jsctags oder whatevertags generiert werden, spielt keine Rolle, solange sie korrekt generiert werden.

Und nun kommen wir zum vierten Punkt, wo der Schmerz wirklich ist: Weder Tagbar noch sein älterer Cousin TagList verwenden tatsächlich eine physische tags Datei. Sie tippen Ctags oder Jsctags direkt an, ohne zu versuchen, vorhandene tags Dateien zu verwenden oder zu aktualisieren. Aus diesem Grund, und die Tatsache, dass TagBar nur den aktuellen Puffer behandelt, sind Ihre eigene physische tags Datei (und damit die tagbezogenen Funktionen von Vim) und TagBar fast garantiert nicht synchron. Auch wenn Sie den gleichen Indexer verwenden.

Also ... Ich würde raten Sie entweder ctags zu verwenden oder jsctags und vergessen, etwas über die Synchronisierung Tagbar des und Vims Tags bezogene Sachen, da beide Dinge völlig getrennt sind:

  • Verwenden Tagbar zu Verstehen/navigieren Sie in Ihrem aktuellen Puffer.

  • Verwenden Sie die Tag-bezogenen Funktionen von Vim, um sich in Ihrem Projekt zu bewegen.


Gelegentliche Gedanken ...

  • Für Vim Ihre tags Datei (en) leicht zu finden, sollten Sie diese Zeile in Ihrer ~/.vimrc setzen:

    set tags=./tags,tags;/ 
    

    ./tags Mittel "Suchen Sie nach einer tags Datei im Verzeichnis der aktuellen Datei", tags bedeutet "suche nach einer tags Datei im Arbeitsverzeichnis", ;/ bedeutet "halte weiter nach oben und bis du / erreichst".

  • The TagBar wiki spricht über einen Fehler in Jsctags, stellen Sie sicher, dass Sie nicht davon betroffen sind.

  • jsctags ist besser als Ctags, wenn Sie verrücktes "modernes" JavaScript mit vielen Rückrufen und selbstausführenden Funktionen schreiben. Wenn Ihr JavaScript eher traditionell ist, können Ctags ausreichen.

+0

romainl, danke für die Erklärung. Ich denke, ich habe jsctags arbeiten, aber die Tagbar zeigte nur die Variablen, Methoden, Schließungen, etc. ohne Zusammenbruch/Hierarchie, wie ein Objektbaum, oder referenzieren Zeug von externen Bibliotheken (require (..)). Ist es so, wie es sein soll? Vielleicht können Ctags einen besseren Job machen? Der größte Wert wäre Cursor auf eine Variable und gehen Sie zu der Quelldatei, die es definiert. Ich hoffe ich mache Sinn. – 1001b

+0

Sie sollen eine hierarchische hierarchische Sicht haben. Jsctags sollten beim Scoping besser funktionieren als Ctags, also klingt das, was du beschreibst, wie der Bug in jsctags, die im TagBar-Wiki erwähnt werden. Sie sollten den Problem-Tracker auf Github für eine gezieltere Hilfe ausprobieren, fürchte ich. Wenn Sie eine aktuelle 'Tag'-Datei haben, sollten Sie mit '' mit dem Cursor auf eine Variable zur Definition springen. Siehe [this] (https://github.com/romainl/dotvim/blob/master/vimrc#L174) für einen JS-freundlichen Befehl. – romainl

+0

Thx wieder. Die Remap-Zeile ist sehr hilfreich. Wie organisieren Sie normalerweise Ihre Tag-Datei (oder wie rufen Sie den jsctags-Befehl auf)? Die verschachtelte Natur der Abhängigkeitsstruktur in JS macht Dinge weniger intuitiv. ZB sitzen die Kernmodule im Knoten, aber die Projektdateien befinden sich in einem anderen Pfad ... Übrigens, der Umfang der Tags passiert mir ... Der vorgeschlagene Fix ist laut dem Wiki nicht so funktionsfähig, wie er benötigt wird downgrade node.js! Eine andere Problemumgehung? Danke nochmal. – 1001b

Verwandte Themen