Einige Editoren (wie Visual Studio unter Windows) führen C ++ - Autovervollständigungen durch, die C ++ verstehen. Zum Beispiel gegeben:
#include <vector>
int main(void) {
std::vector<int> v;
v.i
Im Visual Studio kennt die automatische Vervollständigung die einzige Methode std::vector<int>
, die mit einem i beginnt insert
.
Ist es möglich, diese Art der Autovervollständigung in vim zu bekommen?
ide
autocompletion
filetype-c++
Chris Jefferson
quelle
quelle
cd
in das YCM-Plugin-Verzeichnis (~/.vim/bundle
für mich) und lief./install --clang-completer
.Antworten:
Ich mag clang_complete wirklich dafür. Es erfordert clang und Sie müssen ihm mitteilen, wo sich libclang in Ihrem System befindet. Danach funktioniert es wunderbar.
Man könnte YouCompleteMe vorschlagen, aber um ehrlich zu sein, das Plugin ist sehr überladen, was es verspricht, und es erfordert viel zu viele Schritte, um es zu installieren. Ich hatte es auch mehrfach segfault Vim. Ich könnte nicht glücklicher mit clang_complete sein.
Folgendes erhalte ich, wenn ich tippe
v.
:quelle
return 0
unter diesem Popup-Menü.Das YouCompleteMe ( Link ) -Plugin hat bei mir großartige Arbeit geleistet. Es verwendet libclang, um die Autocomplete-Funktion zu generieren, die eine genaue Vervollständigung liefert.
Es ist sehr anpassbar, insbesondere wenn Sie mit Kompilierungsflags arbeiten. Sie können den "Flaggenerator" bearbeiten, indem Sie ein Python-Skript pro Projekt bearbeiten ( Beispiel ). Aber für mich ist der Hauptvorteil, dass es die Clang Compilation Database ( Link! ) Unterstützt . Dies bedeutet, dass Sie Ihren Code normal kompilieren und clang bitten können, alle für die Kompilierung verwendeten Flags zu spucken und diese Flags mit YouCompleteMe zu verwenden. Sehr praktisch, wenn Sie möchten, dass Ihr Autovervollständigungstool Ihre Makrodefinitionen oder den Speicherort aller Header-Dateien in Ihrem System kennt, ohne dass Sie diese manuell eingeben müssen.
quelle
YouCompleteMe ist nicht so schwer zu installieren, und es war ziemlich stabil für mich. Ich bin vor Jahren von clang_complete auf YouCompleteMe migriert. Eine Sache, der ich zustimme, ist in der Tat aufgebläht mit einer riesigen Commit-Historie, vielen internen Abhängigkeiten und der Unterstützung für viele Sprachen, für die Sie sich vielleicht nicht interessieren, die aber dennoch die zugehörigen Submodule klonen werden. Das ist ein Problem mit YouComplemeMe, immer noch ... es macht die Arbeit.
Ich habe an einer Abzweigung mit besonderer Absicht gearbeitet, um C ++ besser zu unterstützen. Sie können dieses GIF überprüfen, das es anzeigt:
https://s3.amazonaws.com/f.cl.ly/items/1e2F0A123h331c1G0L0R/SadBart.gif
Es nutzt die neuen Parameterinformationen, die Clang bereitstellen kann. Weitere Informationen hierzu finden Sie in meinem Artikel: http://nosubstance.me/articles/2015-01-29-better-completion-for-cpp/ .
quelle