Wie kann ich Vim dazu bringen, die Dokumentation einer C / C ++ - Funktion anzuzeigen?

17

Die meisten Editoren verfügen über eine Funktion wie das Drücken einiger Tasten durch Platzieren von Einfügemarke über einer Funktion. Sie zeigt die Dokumentation dieser Funktion zusammen mit der Anzahl und dem Typ der Argumente an, die die Funktion annimmt.

Ich habe mich gefragt, ob Vim solche Unterstützung bietet. Zum Beispiel verwende ich beim Codieren in C eine eingebaute Funktion qsort(). Da ich mir über Art und Anzahl der Argumente nicht sicher bin, würde ich es gerne wissen, ohne Vim zu entkommen. Ist es möglich?

Sherelock
quelle
2
Nicht sicher, ob dies genau das ist, was Sie wollen, aber wenn Sie der Option den richtigen Wert geben 'keywordprg'(den Namen eines Programms, das die Dokumentation für die gewünschte Sprache verarbeiten kann), dann klicken Sie Kauf ein Schlüsselwort (das der Name sein kann) eine Funktion), sollten Sie die gewünschten Informationen erhalten. Wenn Sie zum Beispiel cppman( github.com/aitjcize/cppman ) installieren und eine autocmd in Ihrem vimrc wie hinzufügen autocmd FileType cpp setlocal keywordprg=cppman, cppmansollte die Dokumentation in einem c ++ - Puffer behandelt werden. Nicht getestet.
Saginaw
2
@saginaw While cppmanist ein ausgezeichneter Vorschlag. Wenn Sie die C- und C ++ - Hilfeseiten ( manpages-posix-devund libstdc++-X.Y-docPakete auf Debian-basierten Systemen) installiert haben, sollte plain old manfunktionieren.
Muru

Antworten:

8

Wenn Sie YouCompleteMe einrichten können , werden C, C ++, JavaScript, Go und einige andere Sprachen unterstützt. Hier ist es in Aktion:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Die Installation ist etwas ärgerlich , und sobald sie installiert ist, müssen Sie sie für C und C ++ konfigurieren, indem Sie eine erstellen .ycm_extra_conf.py. Ich habe einen aus diesem Repo genommen und diesen Effekt erzielt .

muru
quelle
4
"Die Installation ist etwas ärgerlich" ... Das ist eine Untertreibung. Trotzdem ist es sehr gut. ^ _ ~
Sardathrion
4
Gibt es eine Möglichkeit, das Popup "Abschlüsse" zu erzwingen, geöffnet zu bleiben, während die Funktionsargumente eingegeben werden? Sobald Sie beispielsweise den ersten Buchstaben des ersten Arguments eingeben qsort(a, wird das Popup-Fenster ausgeblendet, sodass Sie sich nur schwer an die nächsten Argumente erinnern können.
Thiagowfx
1
Es zeigt aber nur den Prototyp der Funktion. Wie kann es dazu gebracht werden, seine Sauerstoffkommentare anzuzeigen (wie es Eclipse mit javadocs macht)? Ich meine Parameter, Ausgabe, Notizen, Refs ...
Zeta.Investigator
1
@ Zeta.Investigator Eine Sache, die ich in Python häufig verwende, ist YcmCompleter GoTo, dass Sie normalerweise dorthin geschickt werden , wo die Funktion / Klasse im Code definiert wurde. Das ist die Zeile direkt über der Dokumentenkette, in der alles aufgeführt ist, wonach Sie gefragt haben. Ich bin mir nicht sicher, ob sich der Inline-Kommentar in C / Java / C ++ an derselben Stelle befindet.
user1717828
8

Wenn Sie für C Kauf das Schlüsselwort drücken, wird die integrierte Hilfeseite direkt aufgerufen. Stellen Sie den Cursor beispielsweise auf das printfSchlüsselwort:

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

Drücken Sie nun K(Großbuchstabe K) und die Manpage für printfsollte in VIM erscheinen:

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

Dies scheint in allen von Debian abgeleiteten Distributionen, auf denen ich es ausprobiert habe, ohne spezielle Konfiguration zu funktionieren.

dotancohen
quelle
1
Das ist die Manpage des printf(1)Befehls, nicht printf(3)die Funktion. In jedem Fall stammen die C-Funktions-Hilfeseiten von manpages-dev, die normalerweise standardmäßig installiert sind, jedoch nicht immer, und POSIX-Funktionen sind enthalten manpages-posix-dev- normalerweise nicht standardmäßig installiert, ebenso wenig wie die C ++ - Dokumentation ( libstdc++-X.Y-doc).
Muru
5

Wenn Sie eine ordnungsgemäße Dokumentation wünschen, scheint das Plugin in saginaws Kommentar Ihre C ++ - Anforderungen zu erfüllen. Ich kenne keine generische, aber Sie können wahrscheinlich Alternativen für andere Sprachen auf vim.org finden.


Wenn…

  • Ihr Code ist bereits mit ctags indiziert.
  • Ihr Index enthält auch die Standardbibliothek,
  • und alles, was Sie wollen, ist ein Hinweis ,

Mit können Sie <C-w>}die Definition des Schlüsselworts unter Ihrem Cursor in einem Vorschaufenster öffnen. YMMV natürlich.

Siehe :help preview-window, :help tagsund :help ctags.


Sie können auch die integrierte "Include-Search" -Funktion von Vim verwenden: Drücken Sie [i, um die "Signatur" des Wortes unter dem Cursor in der Befehlszeile auszudrucken:

[ich

Sehen :help include-search.

romainl
quelle
1
[iist komisch. Es funktioniert für stdlib.hund qsort, aber nicht cstdlibund std::qsortoder nur qsort.
muru
Für diejenigen, die mit der Nomenklatur nicht vertraut sind, wie ich bin / war, <C-w>bedeutet CTRL-Wdas , welche Nomenklatur in den :helpAkten verwendet wird. Anschließend können Sie :pcdas Vorschaufenster mit schließen.
Danielson317
1

Der C / C ++ - Dateityp von Vim verfügt über eine anständige Omnicompletion-Funktion, die die "Vorschau" -Funktion unterstützt. Fügen Sie also "Vorschau" zu Ihrer Option completeopt hinzu und sehen Sie eine Funktionssignatur, wenn Sie den Einfügemodus abschließen.

Im normalen Modus können Sie STRG + W} drücken, um die Funktionsdeklaration im Vorschaufenster manuell zu öffnen.

Ben
quelle
1

Wie bereits erwähnt, Kfunktioniert das Drücken auf das Schlüsselwort durch Durchsuchen einer Manpage. Zum Abrufen von C ++ - Manpages können Sie https://github.com/aitjcize/cppman verwenden (es werden "Manpages" von cplusplus.com und cppreference.com abgerufen).

kyticka
quelle
0

Installieren Sie YouCompleteMe. Wenn Sie den Mauszeiger über einen Bezeichner bewegen, geben Sie den YcmCompleter GetDocBefehl ein, um das Dokument in einem kleinen Vorschaufenster unten anzuzeigen. Es funktioniert in vielen Sprachen wie Python und C / C ++.

Youcompleteme zeigt auch das Vorschaufenster während der automatischen Vervollständigung an. Sie können das Verhalten der Dokumentvorschau mit einer g:ycm_autoclose_preview_window_after_completionVariablen anpassen .

CyclicUniverse
quelle