suchen

Heim  >  Fragen und Antworten  >  Hauptteil

vim - Wie verwende ich CTags, um Tags für Glibc-Header-Dateien zu generieren?

was ich will:

Ich möchte die Omnicompletion- oder Omnicompletion-Funktion in vim verwenden, um die automatische Vervollständigung von Glibc-Funktionen zu realisieren. Geben Sie beispielsweise pri in die C-Quelldatei ein und drücken Sie dann C-x C-o, um die Liste zum Vervollständigen von printf usw. aufzurufen.
Das Problem besteht nun darin, dass ich ctags verwende, um die von glibc-headers-2.15-57.fc17.i686 installierten Standard-C-Header-Dateien zu verarbeiten und die Datei tags_glibc zu generieren. Geben Sie jedoch pri in die C-Quelldatei ein und dann C-x C-o. Im Popup-Menü gibt es nur die Definition und Prototyp-Deklaration von printf in stdio2.h, nicht jedoch die printf-Deklaration von stdio.h. Das Seltsame ist, dass ich vim verwendet habe, um die generierte Tag-Datei anzuzeigen, nach printf gesucht und die folgenden drei Einträge gefunden habe:

printf	/usr/include/bits/stdio2.h	/^printf (__const char *__restrict __fmt, ...)$/;"	f
printf	/usr/include/bits/stdio2.h	108;"	d
printf	/usr/include/stdio.h	/^extern int printf (__const char *__restrict __format, ...);$/;"	p

Das letzte zeigt, dass ctags die Prototyp-Deklaration (Typ p) von printf in stdio.h generiert, aber warum kann ich die dritte nicht sehen, wenn ich pri<C-x C-o> eingebe? Was habe ich falsch gemacht? ?
Das gleiche Phänomen tritt auch bei Funktionen wie fprintf (dieses Symbol ist in stdio.h und stdio2.h verfügbar) und memcpy (verfügbar in string.h und string3.h) auf.

Umwelt

Mein System ist Fedora17 (3.6.3-1.fc17.i686), ctags ist die neueste Version, 5.8
Der verwendete ctags-Befehl lautet wie folgt:

ctags --langmap=c:.c.h --language-force=c -h .h --c-kinds=+pxl  --exclude='tags*' --exclude='*swp' --exclude='*~' --exclude='*[!ch]' -I _THROW -I __attribute__+ -I __wur -f tags_glibc -L glibc-headers-filelist.txt 

Unter diesen ist die Generierung von glibc-headers-filelist.txt der folgende Befehl:

rpm -ql glibc-headers |grep '\.h' >glibc-headers-filelist.txt

Frage

Liebe VIM-Experten, gibt es eine Möglichkeit, die Tags-Datei der Glibc-Header-Datei besser zu generieren?

世界只因有你世界只因有你2774 Tage vor747

Antworte allen(2)Ich werde antworten

  • 滿天的星座

    滿天的星座2017-05-16 16:44:46

    -e
    Include extern tags. ctags will normally ignore extern declarations of functions or variables; that's handy when generating tags for your own programs. A tags file for the extern declarations in the system's standard header files can be a very handy resource, so this -e flag was created.

    From http://elvis.the-little-red-haired-gi...

    Antwort
    0
  • 为情所困

    为情所困2017-05-16 16:44:46

    使用tags文件时,需要在tags所在的目录打开vim。

    不同目录时需要在vim里设置tags变量,变量值为tags文件路径。例如:

    :set tags=....../tags_glibc

    Antwort
    0
  • StornierenAntwort