Wie finde ich die Aufrufer und den Aufruf einer Funktion in C-Code in vi / vim?

7

Ich möchte wissen, wie kann ich leicht auf einen Funktionsnamen klicken (oder vielleicht einige einfache Verknüpfungen verwenden) und alle aufgerufenen finden oder öffnen, wo es definiert wurde. Die meisten Web-Handbücher im Web sind wirklich schwer zu verstehen oder funktionieren nicht. Angenommen, ich möchte auf allocuvm klicken und sehen, wo es definiert wurde?

%Vor%     
Mona Jalal 19.10.2013, 18:52
quelle

3 Antworten

10

Dafür integriert Vim das Tool cscope ; Weitere Informationen finden Sie in :help cscope .

    
Ingo Karkat 19.10.2013, 19:22
quelle
12

cscope minimales Beispiel

Ingo hat es erwähnt, hier ist ein Beispiel.

Gehen Sie zum Basisverzeichnis Ihres Projekts und führen Sie:

%Vor%

Dies erzeugt eine cscope.out -Datei, die die analysierten Informationen enthält. Die Generation ist ziemlich schnell, sogar für große Projekte wie den Linux-Kernel.

Öffne vim und renne:

%Vor%

c ist eine Gedächtnisstütze für callers . Die anderen cscope bereitgestellten Abfragen sind ebenfalls möglich, Mnemotechniken sind aufgelistet unter:

%Vor%

Dies fügt eine Liste der Anrufer zur Quickfix-Liste hinzu, die Sie mit öffnen können:

%Vor%

Gehe zu der Zeile, die dich interessiert, und drücke Enter, um dorthin zu springen.

Um Anrufer des Funktionsnamens zu finden, der sich gerade unter dem Cursor befindet, fügen Sie zu Ihrem .vimrc :

hinzu %Vor%

und geben Sie :Csc<enter> ein, wenn der Cursor über der Funktion steht.

TODO:

Ein Wort des Rates: Ich liebe vim, aber es ist zu kompliziert für mich, diese Art von Dingen aufzustellen. Wenn Ihnen ein Projekt wichtig genug ist, versuchen Sie, das Projekt auf einer "IDE" zu betreiben. Wenn das Projekt die IDE-Konfigurationsdateien (die sich automatisch ändernde Blobs, die das Repo-Objekt verschmutzen, ...) nicht verfolgt, kann dies einen gewissen Mehraufwand bedeuten, aber es lohnt sich für mich. Für C / C ++ war mein Liebling bisher KDevelop 4.

    
quelle
0

vi /. --- / ist die Suchfunktion in vi, und. wird den gleichen Befehl wiederholen.

Sie können auch sed (stream editor) verwenden, wenn es sich um eine große Datei handelt sed grep kann dir die Zeilennummern bringen

Lesen Sie die Manpage

    
Frank Mancini 23.05.2016 18:24
quelle

Tags und Links