Warum reicht VIM -T -CTAGs nicht aus? Ich kann nicht zu der Funktion springen, die ich will

StackOverflow https://stackoverflow.com/questions/9325583

  •  27-10-2019
  •  | 
  •  

Frage

CTAGs -r DirName, VIM -T -Tags ist sehr leistungsstark, da Sie nach diesen beiden Befehlen jetzt die Möglichkeit haben, zwischen dem Code dieses Projekts zu navigieren. Sie können beispielsweise einfach zum Code einer bestimmten Funktion springen: Tag FunktionName, Tag -Funktionsname, Diese Operation hat jedoch immer noch einige Fallstricke, wie üblich, dass ein Quellcode einige Funktionsaufrufe wie va_start () enthalten kann, während dieser Code nicht in das DirName -Verzeichnis enthalten ist, sodass Indexs für diese Funktion nicht generiert werden und Sie nicht können, und Sie können nicht können, und Sie können nicht können Navigieren Sie zur Definition von va_start (), ist jedoch erforderlich, um zu dieser Funktion zu navigieren? Wie finde ich diesen Code? Ich weiß nicht einmal, wo va_start () genau definiert ist. Wie generiere ich den CTAGS -Index für die Systemfunktionen oder die Funktion von Dritten?

War es hilfreich?

Lösung

Wenn Sie "CTAGS -r DirName" verwenden, indizieren Sie nur Symbole für den Inhalt des Verzeichnisses DirName.

Was passiert, ist, dass "va_args" in stdarg.h definiert ist, was ein Header der C -Standardbibliothek ist.

Sie werden jedes Mal auf dasselbe Problem stoßen, wenn Sie ein Symbol aus einer externen Bibliothek verwenden.

Wenn Sie also alle Symbole zur Verfügung haben möchten, können Sie zusätzlich zu Ihrem Programm den Code für externe Bibliotheken auch indizieren.

Es bedeutet :

  1. Der Quellcode sollte verfügbar sein (was nicht immer der Fall ist)

  2. Sobald Sie in Ihrem System gefunden haben, wo sich die Datei befindet, sollte sie analysiert werden, um in Ihre "Tag" -Datei aufgenommen zu werden.

Sobald Sie ausgeführt haben ctags -R projectPath Sie können ausführen ctags -Ra /usr/include So fügen Sie alle Inhalte von /usr /in Ihre Tag -Datei ein.

Allgemeiner möchten Sie so etwas wie ctags -Ra librarySourcePath Um alle Symbole in Ihrem Programm zur Verfügung zu stellen.

Bearbeiten: Seien Sie jedoch vorsichtig: /usr /include kann viele Dateien enthalten, also die Größe von Ihnen tag Die Datei kann erheblich zunehmen, und als Folge, wenn Sie jedes Mal nach einem Symbol suchen, könnte es viel langsamer sein!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top