Erstens frage ich nicht nach Leistung. Ich suche nach etwas, das mir mental hilft, in große C-Quellcodedateien zu gelangen, an die ich ja nicht gewöhnt bin. Nehmen wir zum Beispiel readelf.c
. Diese Datei besteht aus 20.000 Zeilen. Ich kann den Code lesen und verstehen, aber ich möchte lieber nicht. Dies ist nach meiner Erfahrung mit C immer nur ein Problem. Aus irgendeinem Grund ist die Dateigröße in C absurd groß und readelf.c
damit nicht allein. Gibt es irgendetwas, das eine C-Datei in etwas Vernünftiges wie ein strukturiertes Projekt virtualisieren kann? Ich weiß, das verlangt viel, aber es scheint, als hätte jemand mit all dem existierenden C-Code so etwas getan.
Das Terminal meines Laptops kann ~ 50 Leitungen aufnehmen. Welche Tools und Plugins bietet vim zum Navigieren in Dateien mit mehr als 10.000, aber weniger als 100.000 Zeilen?
quelle
Antworten:
Ich denke, was Sie suchen, ist ein Plugin wie eine Tag-Leiste , mit der eine Seitenleiste erstellt werden kann, in der alle Funktionen, Strukturen / Klassen, Makros usw. angezeigt werden. Außerdem können Sie auf das Tag klicken (oder die Eingabetaste drücken) und dann zu springen die Definition.
quelle
Sie können das Falten von Code mit der Option vim aktivieren:
set foldmethod=syntax
Dies reduziert die Menge an Code, die Sie gleichzeitig sehen, und macht ihn verwaltbar. Verwenden Sie nach dem Aktivieren der Code-Faltung die folgenden Befehle zum Öffnen und Schließen von Faltungen: Die Befehle zc (Schließen), zo (Öffnen) und za (Umschalten) werden auf einer Ebene der Faltung am Cursor ausgeführt. Die Befehle zC, zO und zA sind ähnlich, funktionieren jedoch auf allen Faltebenen (z. B. kann sich die Cursorzeile in einer offenen Falte befinden, die sich innerhalb einer anderen offenen Falte befindet; durch Eingabe von zC werden alle Falten am Cursor geschlossen).Der Befehl zr reduziert das Falten, indem eine weitere Ebene von Falten im gesamten Puffer geöffnet wird (die Cursorposition ist nicht relevant). Verwenden Sie zR, um alle Falten zu öffnen.
quelle
Etwas, das ich tue, ist zu benutzen
Sie finden mein gesamtes Setup @ hier
quelle
Zusätzlich zu ctags- basierten Plugins wie Taglist verwende ich cscope . Einige Plugins können nützlich sein: wie cscope_macros und CCTree . Bevor Sie ctags oder cscope verwenden können, müssen Sie eine Tag-Datei und eine cscope-Datenbank erstellen (siehe Links oben). Obwohl diese Tools ziemlich alt sind, funktionieren sie mit vielen modernen C-Implementierungen einwandfrei.
Vergessen Sie auch nicht über Markierungen Sie auf wichtige Orte festlegen können, Falten unerwünschte Teile,
gD
,*
,]]
und ähnliche Bewegungen. Wenn Sie keine externen Programme oder Plugins verwenden möchten, können Sie auf diese Weise eine Vorschau der Datei erhaltenfoldmethod
Legt die Faltung basierend auf der C-Syntax fest (Sie können sie in .vimrc schreiben) und derzM
Befehl (im normalen Modus) faltet alles auf die maximale Ebene.Weitere Informationen finden Sie unter:
quelle
Mit der Tagbar können Sie durch eine große Anzahl von Funktionen in einer einzigen Datei navigieren. Unter anderem unterstützt es das Sortieren nach Name oder Zeilennummer, was ich sehr hilfreich finde.
marks
kann auch eine große Hilfe beim Hin- und Herbewegen in einer großen Datei sein. Weitere Informationen finden Sie unter:h marks
oder http://vimdoc.sourceforge.net/htmldoc/motion.html#mark .Wenn Sie feststellen, dass ständig zwischen mehreren (großen) Dateien gewechselt werden muss, hilft Ihnen Gtags möglicherweise dabei, Definitionen / Referenzen im gesamten Projekt zu finden.
quelle