一言で言えば、私が探してる作業のVimエディタの自動補完機能。VimはLinuxでIDEを完全に置き換えると以前に主張しましたが、確かにそうですが、オートコンプリートという重要な機能が1つ欠けています。
私が知っているCtrl+ N、あふれんばかりのctagsの統合、タグリスト、cppcompleteとOmniCppComplete。悲しいかな、これらはどれも「動作するオートコンプリート」の私の説明に適合しません。
- Ctrl+はN、スペルの方法を忘れた場合にのみ(
class
または)うまく機能しますwhile
。しかたがない。 - Ctagsは基本的な機能を提供しますが、多くの欠点があります。
- Taglistは単なるCtagsラッパーであり、そのため、その欠点のほとんどを継承しています(ただし、宣言をリストする場合はうまく機能します)。
- cppcompleteが約束どおりに機能しないだけでなく、私が何を間違えたか、またはそれが正しく「機能」していて、制限が仕様によるものであるかどうかがわかりません。
- OmniCppCompleteにはcppcompleteと同じ問題があるようです。つまり、オートコンプリートが適切に機能しません。さらに、
tags
ファイルをもう一度手動で更新する必要があります。
私は、現代の本格的なIDEでさえ、優れたC ++コード補完を提供していないという事実を知っています。だからこそ、今までこの分野でのVimの欠如を受け入れてきました。しかし、コード補完の基本的なレベルは要求するほど多くはなく、実際に生産的な使用に必要とされると思います。だから、少なくとも次のことを達成できる何かを探しています。
構文認識。cppcompleteの約束(ただし、私には提供されません)、次の正しいスコープを認識した自動補完:
variableName.abc variableName->abc typeName::abc
そして、実際には、それ以外のものはまったく役に立ちません。
構成可能性。(簡単に)ソースファイルの場所を指定する必要があるため、スクリプトがオートコンプリート情報を取得する場所を指定します。実際、必要なインクルードパスを指定するMakefileがディレクトリにあります。Eclipseはそこにある情報を解釈できます。なぜVimスクリプトも解釈しないのですか?
最新性。ファイル内の何かを変更したらすぐに、オートコンプリートにこれを反映させたいと思います。手動でトリガーしたくありません
ctags
(または同等のもの)。また、変更があるべきインクリメンタル私は1つのファイルだけを変更したとき、すなわち、それは完全だが、受け入れられないためにctags
(巨大な可能性がある)の再解析ディレクトリツリー全体へ。
何か忘れましたか?自由に更新してください。
たくさんの設定やいじりに慣れていますが、ソリューションを最初からプログラミングしたくありません。Vimスクリプトのデバッグは得意ではありません。
最後に、JavaとC#についても同様のものが欲しいのですが、期待するのは多すぎると思いctags
ます。コードファイルを解析するだけで、JavaとC#の両方に、インデックスを付ける必要のある巨大なプリコンパイル済みフレームワークがあります。残念ながら、IDEなしで.NETを開発することは、C ++よりもPITAのほうがはるかに優れています。
clang_complete
技術的には最も健全ですが、結果のキャッシュと部分的なコンパイルの欠如のために法外に遅いです。複雑で時間のかかるセットアップが必要なものもあるので、すべての回答を試したわけではないことを認めざるを得ません。clangによって開発者がC ++ソースからASTをビルドできるようになったので、使用可能なプラグインを探し続けます(これまでは、C ++用の優れた無料のパーサーはありませんでした)。
clang_complete
最近試しましたか?libclang
キャッシュで使用できるようになり、より高速になるはずです。
formatted like this
。)
sh
(私のライブラリにあることを意味します)で始まり、その後に私のクラスの省略形が続きます。たとえばshP
ためのParser
クラス。次に、書き込みshP
とCTRL + p(または必要に応じてCTRL + n)を押してクラスメンバーを最後の使用から最初(またはCTRL + nの場合は最初から最後)に取得します