recherche

Maison  >  Questions et réponses  >  le corps du texte

vim - Comment générer des balises pour les fichiers d'en-tête de la glibc à l'aide de ctags?

ce que je veux :

Je souhaite utiliser la fonction omnicomplétion ou omnicomplétion dans vim pour réaliser l'achèvement automatique des fonctions glibc. Par exemple, entrez pri dans le fichier source C, puis appuyez sur C-x C-o pour afficher la liste pour terminer printf, et ainsi de suite.
Le problème maintenant est que j'utilise ctags pour traiter les fichiers d'en-tête C standard installés par glibc-headers-2.15-57.fc17.i686 et générer le fichier tags_glibc. Mais entrez pri dans le fichier source C, puis C-x C-o. Dans le menu contextuel, il n'y a que la définition et la déclaration du prototype de printf dans stdio2.h, mais pas la déclaration printf de stdio.h. Ce qui est étrange, c'est que j'ai utilisé vim pour afficher le fichier de balises généré, recherché printf et trouvé les trois entrées suivantes :

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

Le dernier montre que ctags génère la déclaration prototype (type p) de printf dans stdio.h, mais pourquoi ne puis-je pas voir le troisième lorsque j'entre pri<C-x C-o> Où est-ce que je me suis trompé? ?
Le même phénomène se produit également dans des fonctions telles que fprintf (ce symbole est disponible dans stdio.h et stdio2.h), memcpy (disponible dans string.h et string3.h).

Environnement

Mon système est fedora17 (3.6.3-1.fc17.i686), ctags est la dernière version, 5.8
La commande ctags utilisée est la suivante :

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 

Parmi eux, la génération de glibc-headers-filelist.txt est la commande suivante :

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

Question

Chers experts vim, existe-t-il un moyen de mieux générer le fichier de balises du fichier d'en-tête de la glibc ?

世界只因有你世界只因有你2774 Il y a quelques jours739

répondre à tous(2)je répondrai

  • 滿天的星座

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

    -e
    Incluez des balises externes. les ctags ignoreront normalement les déclarations externes de fonctions ou de variables ; c'est pratique lors de la génération de balises pour vos propres programmes. Un fichier de balises pour les déclarations externes dans les fichiers d'en-tête standard du système peut être une ressource très pratique, c'est pourquoi cet indicateur -e a été créé.

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

    répondre
    0
  • 为情所困

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

    Lorsque vous utilisez des fichiers de balises, vous devez ouvrir vim dans le répertoire où se trouvent les balises.

    Lorsque vous utilisez différents répertoires, vous devez définir la variable tags dans vim, et la valeur de la variable est le chemin du fichier de balises. Par exemple :

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

    répondre
    0
  • Annulerrépondre