0

現在、C++ ベースの IDE を XCode から Vim に切り替えているところです。Vim プラグイン「YCM」について読んでいますが、ソース ディレクトリに .ycm_extra_conf.py が存在する必要があります。YCM Generator を使用して、タグを生成するための .ycm_extra_conf.py と Ctags を生成しています。私の質問は、タグを使用するものは何ですか? YCM は Ctags (コードに関するすべての定義と重要な情報を収集するもの) を使用しますか? YCM は CTags によって生成されたタグを何らかの方法で使用しますか? .ycm_extra_conf.py の生成には、タグの存在が必要ですか?

4

2 に答える 2

2

YCM にはタグ データベースは必要ありません。clang パーサーに依存するようにコンパイルした場合は、非常にスマートな補完が得られます。それがなければ、タグのおかげで、何もないよりはましなものを手に入れることができます。

それ以外の場合、他のほとんどのプラグインは、さまざまなことを達成するためにタグ データベースに依存しています。たとえば、tagbarは、システム内のタグの構造化されたアウトラインを表示します。lh-cppvim-refactorでは、親、子、メンバー、ジャンプ/関数定義の生成などを推測するために、最後の瞬間にタグ ベースを構築します。

clang ベースのプラグインで達成できるほどスマートなことをタグで達成できないことを知っておく必要があります。タグの生成は実際にははるかに高速です (ただし、YCM はバックグラウンドで動作し、easytags (IIRC)、Gutentag、 lh-tags v2 (私が管理しています) などのタグ生成プラグインも同様です)。残念ながら、彼らは多くの情報を見逃しています。特に、あまり活発ではない熱狂的な ctags を使用する場合、 C++ コードを解析する代わりにユニバーサル ctagsを強くお勧めします。C++11 の構造も理解できます。

于 2016-09-12T09:52:45.950 に答える