Code-Completion im VIM (v7.1) mittels ctags und OmniCppComplete

26. November 2008
Download des OmniCppComplete-Packages und entpacken des Inhalts ins Verzeichnis ~/.vim. Danach den VIM öffnen und :helptags ~/.vim/doc/ (im Kommando-Modus) ausführen. Nun sollte die Hilfe zum Package im VIM verfügbar sein. Davon überzeugen wir uns mittels :h omnicppcomplete. Wer Zeit hat, der kann sich jetzt in aller Ruhe die Hilfe ansehen. Für die Eiligen geht's hier weiter.

Wir müssen nun die Verwendung von Plugins in der .vimrc aktivieren. Dies geschieht mittels der beiden Zeilen:
 
set nocp
filetype plugin on
 
Als nächstes erstellen wir die Tags-Datei(en). Dazu verwenden wir das Tools ctags von Darren Hiebert (man 1 ctags bzw. Exuberant CTags). Um dies zu verdeutlichen habe ich eine kleine Header-Datei erstellt, die eine Typdefinition und drei Prototypen enthält:
 
...
typedef struct __test_struct {
    int x;
    double y;
} test_t;

int test_calc_sum( int x, int y );
double test_calc_mult( double x, double y );
void test_output();
...
 
Wir wechseln nun in das Verzeichnis, in der unser Code (den wir taggen wollen) liegt und führen nun das Tagging durch. Dazu geben wir folgendes am Shell-Prompt $ ein:
 
$ ctags -R -f test.tags --c-kinds=+p --fields=+iaS *
 
Mittels -R durchsuchen wir auch alle Unterverzeichnisse, -f <name> ist die Datei, die am Ende die Tags aufnimmt (hier einfach test.tags genannt). Mittels --c-kinds=+p sagen wir, dass wir C-Code taggen wollen und an Prototypen (+p) interessiert sind. Es lohnt sich ein Blick in die Manpage, diese erklärt die (restlichen) Parameter ziemlich gut.
 
Code Completion Beispiel
 
Abschließend müssen wir noch die Datei mit den Tags in VIM einbinden. Dazu öffnen wir die .vimrc und geben folgende Zeile ein:
 
set tags+=/pfad_zum_tagfile/test.tags
 
pfad_zum_tagfile muss natürlich durch etwas Sinnvolles - wie zum Beispiel dem Pfad zu Deiner Tag-Datei - ersetzt werden.

Jetzt können wir VIM öffnen und das Ganze ausprobieren. Im Einfügen-Modus geben wir einfach mal das Wörtchen test ein und drücken dann <Strg+x><Strg+o>. Es sollte sich nun ein kleines Popup-Fenster (wie in der Abbildung oben) öffnen.
 
Kommentare, Ideen oder Vorschläge willkommen!
HILFE
Code-Beispiele werden mit den BBCodes [code][/code] dargestellt. Jedes Tag muss eine Zeile für sich allein haben, d.h der Beispiel-Code muss wirklich ZWISCHEN den Tags stehen. Beispiel:
[code] ACHTUNG! HIER UMBRUCH WICHTIG. TAG [code] MUSS ALLEIN STEHEN
#include <stdio.h>

int main( void ){
    return 0;
} ACHTUNG! HIER UMBRUCH WICHTIG. NACHFOLGENDES TAG [/code] MUSS ALLEIN STEHEN
[/code]

Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
Dein Name *
Deine Email
Deine Website
Vorschau