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?
Dafür integriert Vim das Tool cscope ; Weitere Informationen finden Sie in :help cscope
.
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:
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
:
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.
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