c++ - jump - vim using ctags




Autovervollständigung in Vim (5)

Es gibt auch clang_complete , das den clang Compiler verwendet , um Code-Vervollständigung für C ++ - Projekte bereitzustellen. Es gibt eine weitere Frage mit Tipps zur Fehlerbehebung für dieses Plugin.

Das Plugin scheint ziemlich gut zu funktionieren, solange das Projekt kompiliert wird, aber es ist für große Projekte zu langsam (da es eine vollständige Kompilierung versucht, um die Tag-Liste zu generieren).

Kurz gesagt, ich suche nach einer funktionierenden Autokomplettierungsfunktion für den Vim-Editor. Ich habe vorhin argumentiert, dass Vim eine IDE unter Linux komplett ersetzt und obwohl das sicher stimmt, fehlt eine wichtige Eigenschaft: Autovervollständigung.

Ich kenne Ctrl + N , Exuberant Ctags Integration , Taglist , cppcomplete und OmniCppComplete . Leider passt nichts davon zu meiner Beschreibung von "funktionierender Autovervollständigung:"

  • Strg + N funktioniert gut (nur), wenn Sie nicht wissen, wie man die class buchstabiert, oder while . Naja.
  • Ctags gibt Ihnen die Grundlagen, hat aber viele Nachteile.
  • Taglist ist nur ein Ctags-Wrapper und erbt daher die meisten seiner Nachteile (obwohl es gut für das Auflisten von Deklarationen funktioniert).
  • cppcomplete funktioniert einfach nicht wie versprochen, und ich kann nicht herausfinden, was ich falsch gemacht habe, oder ob es richtig funktioniert und die Beschränkungen vom Design her gelten.
  • OmniCppComplete scheint die gleichen Probleme wie cppcomplete zu haben, dh die automatische Vervollständigung funktioniert nicht richtig. Außerdem muss die tags Datei erneut manuell aktualisiert werden.

Ich bin mir der Tatsache bewusst, dass nicht einmal moderne, vollständige IDEs eine gute C ++ - Code-Vervollständigung bieten. Deshalb habe ich Vims Mangel in diesem Bereich bis jetzt akzeptiert. Aber ich denke, dass ein grundlegendes Niveau der Codevervollständigung nicht zu viel verlangt ist und tatsächlich für den produktiven Einsatz benötigt wird. Also suche ich nach etwas, das mindestens die folgenden Dinge erreichen kann.

  • Syntaxbewusstsein . cppcomplete Versprechen (aber liefert nicht für mich), korrekte, bereichsbewusste Auto-Vervollständigung der folgenden:

    variableName.abc
    variableName->abc
    typeName::abc
    

    Und wirklich, alles andere ist völlig nutzlos.

  • Konfigurierbarkeit . Ich muss (leicht) angeben, wo sich die Quelldateien befinden und woher das Skript die Informationen zur automatischen Vervollständigung erhält. Tatsächlich habe ich ein Makefile in meinem Verzeichnis, das die erforderlichen Include-Pfade angibt. Eclipse kann die darin enthaltenen Informationen interpretieren, warum nicht auch ein Vim-Skript?

  • Aktualität . Sobald ich etwas in meiner Datei ändere, möchte ich, dass die automatische Vervollständigung dies widerspiegelt. Ich möchte ctags (oder etwas Vergleichbares) nicht manuell auslösen. Außerdem sollten Änderungen inkrementell sein , dh wenn ich nur eine Datei geändert habe, ist es völlig inakzeptabel für ctags , den gesamten Verzeichnisbaum (der sehr groß sein kann) erneut zu analysieren.

Habe ich etwas vergessen? Fühlen Sie sich frei zu aktualisieren.

Ich bin mit ziemlich viel Konfiguration und / oder Basteln zufrieden, aber ich möchte keine Lösung von Grund auf programmieren, und ich bin nicht gut darin, Vim-Skripte zu debuggen.

Eine letzte Anmerkung, ich würde gerne etwas ähnliches für Java und C #, aber ich denke, das ist zu viel zu hoffen: ctags analysiert nur Code-Dateien und sowohl Java als auch C # haben große, vorkompilierte Frameworks, die indiziert werden müssten. Leider ist die Entwicklung von .NET ohne eine IDE noch mehr eine PITA als C ++.



Ich habe gerade das Projekt Eclim in einer anderen Frage gefunden . Das sieht zumindest für die Java-Integration vielversprechend aus.


Suchen Sie etwas wie Intellisense?

insevim scheint das Problem anzugehen.

Link zu Screenshots here


Wie gewünscht, hier ist der Kommentar, den ich früher gab:

Schau dir das an:

Dieser Link sollte Ihnen helfen, wenn Sie monodevelop auf einem MacOSX verwenden möchten

Viel Glück und gute Programmierung.





autocomplete