Comment puis-je demander à Vim d'afficher la documentation d'une fonction C / C ++?

17

La plupart des éditeurs ont une fonctionnalité comme lorsque vous appuyez sur certaines touches en plaçant un curseur sur une fonction, il affiche la documentation de cette fonction ainsi que le nombre et le type d'arguments que cette fonction prend.

Je me demandais si Vim offre un tel support. Par exemple, lors du codage en C, j'utilise une fonction intégrée qsort(). Comme je ne suis pas sûr du type et du nombre d'arguments qu'il faut, je voudrais le savoir sans échapper à Vim. C'est possible?

sherelock
la source
2
Pas sûr que c'est exactement ce que vous voulez, mais si vous donnez la bonne valeur à l'option 'keywordprg'(le nom d'un programme qui peut gérer la documentation de la langue que vous voulez), puis en appuyant Ksur un mot-clé (qui peut être le nom de une fonction), vous devriez obtenir les informations que vous souhaitez. Par exemple, si vous installez cppman( github.com/aitjcize/cppman ) et ajoutez un autocmd dans votre vimrc tel que autocmd FileType cpp setlocal keywordprg=cppman, alors vous devez cppmangérer la documentation dans un tampon c ++. Non testé cependant.
saginaw
2
@saginaw Bien que ce cppmansoit une excellente suggestion, si vous avez installé les pages de manuel C et C ++ ( manpages-posix-devet les libstdc++-X.Y-docpackages sur les systèmes basés sur Debian), plain old mandevrait fonctionner.
muru

Réponses:

8

Si vous pouvez configurer YouCompleteMe , il prend en charge C, C ++, JavaScript, Go et certains autres langages. Voici en action:

entrez la description de l'image ici entrez la description de l'image ici

C'est un peu ennuyeux à installer , et une fois qu'il est installé, vous devez le configurer pour C et C ++ en créant un fichier .ycm_extra_conf.py. J'en ai retiré un de ce dépôt et j'ai obtenu cet effet.

muru
la source
4
"C'est un peu ennuyeux à installer," ... C'est un euphémisme. C'est quand même très bien. ^ _ ~
Sardathrion
4
Existe-t-il un moyen de forcer le pop-up de finitions à rester ouvert pendant la saisie des arguments de la fonction? Par exemple, dès que vous tapez la première lettre du premier argument qsort(a, la fenêtre contextuelle disparaît, ce qui rend difficile la mémorisation des arguments suivants.
thiagowfx
1
Mais il montre juste le prototype de la fonction. Comment lui faire afficher ses commentaires doxygen (comme Eclipse le fait avec javadocs)? Je veux dire les paramètres, la sortie, les notes, les références ...
Zeta.Investigator
1
@ Zeta.Investigator Une chose que j'utilise beaucoup en Python est YcmCompleter GoTo, qui vous envoie généralement à l'endroit où la fonction / classe a été définie dans le code. C'est la ligne juste au-dessus de la docstring, qui répertorie tout ce que vous avez demandé. Je ne sais pas si le commentaire en ligne est au même endroit en C / Java / C ++.
user1717828
8

Pour C, appuyez Ksur le mot-clé pour afficher directement la page de manuel intégrée. Par exemple, placez le curseur sur le printfmot - clé:

printf("Hello, %s!", foo);

Appuyez maintenant sur K(majuscule K) et la page de manuel de printfdevrait apparaître dans VIM:

NAME
   printf - format and print data

SYNOPSIS
   printf FORMAT [ARGUMENT]...
   printf OPTION

DESCRIPTION
   Print ARGUMENT(s) according to FORMAT, or execute according to OPTION:

   --help display this help and exit

   --version
          output version information and exit

   FORMAT controls the output as in C printf.  Interpreted sequences are:

   \"     double quote
   \\     backslash

   ... It continues for quite a few scrollable pages

Cela semble fonctionner dès le départ dans toutes les distributions dérivées de Debian sur lesquelles j'ai essayé, aucune configuration spécifique requise.

dotancohen
la source
1
C'est la page de manuel de printf(1)la commande, pas printf(3)la fonction. Dans tous les cas, les pages de manuel de la fonction C proviennent de manpages-dev, qui sont généralement installées par défaut, mais pas toujours, et les fonctions POSIX sont présentes manpages-posix-dev- généralement pas installées par défaut, pas plus que la documentation C ++ ( libstdc++-X.Y-doc).
muru
5

Si vous voulez une documentation appropriée , le plugin dans le commentaire de saginaw semble couvrir vos besoins en C ++. Je n'en connais pas de générique mais vous pouvez probablement trouver des alternatives pour d'autres langues sur vim.org.


Si…

  • votre code est déjà indexé avec ctags,
  • votre index comprend également la bibliothèque standard,
  • et tout ce que vous voulez, c'est un indice ,

vous pouvez utiliser <C-w>}pour ouvrir la définition du mot-clé sous votre curseur dans une fenêtre d'aperçu. YMMV, bien sûr.

Voir :help preview-window, :help tagset :help ctags.


Vous pouvez également utiliser la fonctionnalité intégrée "recherche d'inclusion" de Vim: appuyez sur [ipour imprimer la "signature" du mot sous le curseur dans la ligne de commande:

[je

Tu vois :help include-search.

romainl
la source
1
[ic'est bizarre. Cela fonctionne pour stdlib.het qsort, mais pas cstdlibet std::qsortou juste qsort.
muru
Pour ceux qui ne connaissent pas la nomenclature telle que je suis / était un <C-w>moyen CTRL-WQuelle est la nomenclature utilisée dans les :helpfichiers. Vous pouvez ensuite utiliser :pcpour fermer la fenêtre d'aperçu.
danielson317
1

Le type de fichier C / C ++ de Vim est livré avec une fonction d'omnicompletion décente, qui prend en charge la fonctionnalité "aperçu". Ajoutez donc "aperçu" à votre option completeopt et voyez une signature de fonction lorsque vous insérez l'achèvement du mode.

En mode normal, vous pouvez CTRL + W} pour ouvrir manuellement la déclaration de fonction dans la fenêtre d'aperçu.

Ben
la source
1

Comme mentionné, appuyer Ksur le mot-clé fonctionne en recherchant une page de manuel. Pour obtenir les pages de manuel C ++, vous pouvez essayer https://github.com/aitjcize/cppman (il obtient les "pages de manuel" de cplusplus.com et cppreference.com).

kyticka
la source
0

Installez YouCompleteMe. Lorsque vous placez le curseur sur un identifiant, entrez la YcmCompleter GetDoccommande pour obtenir le document dans une petite fenêtre d'aperçu en bas. Il fonctionne dans de nombreux langages comme python et c / c ++.

Youcompleteme affiche également la fenêtre d'aperçu lors de sa fonction de saisie semi-automatique. Vous pouvez personnaliser le comportement de l'aperçu du document avec une g:ycm_autoclose_preview_window_after_completionvariable.

CyclicUniverse
la source