web-dev-qa-db-de.com

Vim YouCompleteMe-Konfiguration

ich habe gerade YouCompleteMe für Vim durch Vundle installiert. Es funktioniert, aber es werden nur die Wörter angezeigt, die in der aktuellen Datei enthalten sind. Ich möchte es verwenden, um C++ - Programme zu entwickeln. Wie kann ich es beispielsweise so konfigurieren, dass die automatische Vervollständigung von C++ - Header-Dateien in/usr/include angezeigt wird? Danke vielmals.

19
mastergap

Obwohl die Vorschläge hier am Anfang funktionieren könnten, bin ich mir nicht sicher, ob dies der richtige Weg ist. Laut YCM-Entwickler benötigen Sie beim Starten eines Projekts eine neue Datei .ycm_extra_conf.py

Von https://valloric.github.io/YouCompleteMe/#ubuntu-linux-x64-super-quick-installation

YCM sucht nach einer Datei .ycm_extra_conf.py im Verzeichnis der geöffneten Datei oder in einem darüber liegenden Verzeichnis in der Hierarchie (rekursiv). Wenn die Datei gefunden wird, wird sie (nur einmal!) als Python-Modul geladen. YCM ruft in diesem Modul eine FlagsForFile-Methode auf, die ihm die Informationen geben sollte, die zum Kompilieren der aktuellen Datei erforderlich sind. Sie können auch einen Pfad zu einer globalen .ycm_extra_conf.py -Datei angeben, die als Fallback verwendet wird. Um die Ausführung von schädlichem Code aus einer Datei zu verhindern, die Sie nicht geschrieben haben, werden Sie von YCM einmal pro .ycm_extra_conf.py gefragt, ob das Laden sicher ist. Dies kann deaktiviert werden und Sie können White-/Blacklist-Dateien auswählen. Weitere Informationen finden Sie im Abschnitt Optionen.

Sie müssen vielleicht nur die Kompilierungsflags von Vanilla .ycm_extra_conf.py aus ändern, aber ich denke, es ist ratsam, für jedes Projekt, das Sie starten, eine neue Datei zu erstellen.

2
xoSauce

Sie müssen zu ~/.vim/bundles/YouCompleteMe navigieren und das Installationsskript mit --clang-completer ausführen, also ./install.sh --clang-completer. Wenn es fertig ist, sollten Sie C-ähnliche Sprachen unterstützen.

Möglicherweise müssen Sie auch let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py' in Ihren ~/.vimrc einfügen.

19
Battleroid

Ich habe mit pathogen installiert. Ich habe die obigen Anweisungen mit ./install.sh --clang-complete ausprobiert. Danach hat es nicht funktioniert, und ich musste tatsächlich den Pfad hinzufügen. Aber es war anders als in einer anderen Antwort, nämlich

let g:ycm_global_ycm_extra_conf = '.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

also gibt es eine zusätzliche "dritte_party/ycmd" im Pfad.

6
deph

Ich wollte nur hinzufügen, wenn Sie eine Konfigurationsdatei nicht manuell definieren möchten, gibt es dieses nette kleine Repository, das sie automatisch generiert. https://github.com/rdnetto/YCM-Generator

0
user2267258

Alles, was die Leute hier gesagt haben, ist richtig. Ich möchte nur hinzufügen, dass das Skript "install.sh" ab 2017 veraltet ist. Jetzt müssen Sie stattdessen das Skript install.py verwenden, indem Sie Folgendes eingeben

./install.py --clang-completer

In Ihrer .vimrc-Datei müssen Sie anstelle von ".vim/bundle/blahblahblah" ein "~ /" vor der Adresse hinzufügen, indem Sie Folgendes hinzufügen:

let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"

in Ihre .vimrc-Datei, um einen absoluten Pfad aus dem Home-Verzeichnis anzugeben, damit Vim die Datei ".ycm_extra_conf.py" finden kann. Andernfalls können Sie ein komisches Verhalten feststellen.