一部のエディター(Windows上のVisual Studioなど)は、C ++を理解するC ++自動補完を行います。たとえば、次の場合:
#include <vector>
int main(void) {
std::vector<int> v;
v.i
Visual Studioでは、オートコンプリートstd::vector<int>
はiで始まる唯一のメソッドを知っていますinsert
。
vimでこの種のオートコンプリートを取得することは可能ですか?
一部のエディター(Windows上のVisual Studioなど)は、C ++を理解するC ++自動補完を行います。たとえば、次の場合:
#include <vector>
int main(void) {
std::vector<int> v;
v.i
Visual Studioでは、オートコンプリートstd::vector<int>
はiで始まる唯一のメソッドを知っていますinsert
。
vimでこの種のオートコンプリートを取得することは可能ですか?
回答:
これにはclang_completeが本当に好きです。それにはclangが必要であり、システム内のlibclangの場所を伝える必要があります。その後、それは素晴らしく機能します。
人々はYouCompleteMeを提案するかもしれませんが、正直なところ、そのプラグインは、それが言うことのために非常に肥大化しており、インストールするのに非常に多くのステップを必要とします。また、Vimを複数回使用しました。clang_completeでは満足できませんでした。
これは私が入力したときに得られるものですv.
:
return 0
ポップアップメニューのすぐ下にあります。
YouCompleteMe(Link)プラグインは私にとって素晴らしい仕事です。libclangを使用して自動補完機能を生成し、正確な補完を提供します。
特にコンパイルフラグを使用する場合、多くのカスタマイズがあります。プロジェクトごとにpythonスクリプトを編集する「フラグジェネレーター」を編集できます(例)。しかし、私にとっての主な利点は、Clang Compilation Database(Link!)をサポートしていることです。つまり、通常どおりコードをコンパイルし、clangにコンパイルに使用されるすべてのフラグを吐き出し、それらのフラグをYouCompleteMeで使用することができます。オートコンプリートツールでマクロ定義またはシステム内のすべてのヘッダーファイルの場所を手動で入力することなく認識できるようにする場合に非常に便利です。
YouCompleteMeのインストールはそれほど難しくなく、かなり安定しています。数年前にclang_completeからYouCompleteMeに移行しました。私が同意する1つのことは、それは確かに巨大なコミット履歴、多くの内部依存性、あなたが気にしないかもしれない多くの言語のサポートで肥大化していますが、それでもその関連サブモジュールのクローンを作成することになります。それは、それがYouComplemeMeの問題であり、それでも…。仕事をします。
私はC ++をより良くサポートするために特別な目的でフォークに取り組んできました。このgifを見て確認してください:
https://s3.amazonaws.com/f.cl.ly/items/1e2F0A123h331c1G0L0R/SadBart.gif
Clangが提供できる新しいパラメーター情報を活用します。詳細については、この記事http://nosubstance.me/articles/2015-01-29-better-completion-for-cpp/から学ぶことができます。