VimでのC++のコード補完は、実際には優れています。それを機能させるためにあなたが取らなければならないステップの概要を説明します。ただし、ここではあまり詳しく説明しません(巨大なオープンソースコードベースの構築、リポジトリのクローン作成、Vimのプラグインのインストールなど)。そうしないと、初心者向けの大規模なチュートリアルを作成する価値があります。したがって、あなたがよく知っていて、よく準備されたソフトウェア開発者であると仮定すると、そこに流暢なガイドがあります:
clang_complete(Vim用プラグイン)を入手してインストールします。
neocomplcache(Vim用プラグイン)を入手してインストールします。
Unixを使用している場合は、LLVMとClangがすでにシステムにインストールされているか、パッケージマネージャーを使用して単一のコマンドでインストールする必要があるため、幸運です。もしそうなら、あなたはすぐに最後のステップ(#7)にジャンプすることができます。
Windowsを使用している場合は、それほど幸運ではありませんが、実際には、実用的な観点からは優れています。自分で巨大なものを構築し、何があっても機能させるという素晴らしい経験ができます。:)
したがって、Windowsを使用している場合(そして私が見ることができるようにQt Creatorを使用している場合)、システムにMinGWがすでにインストールされている可能性があります。そうでない場合は、最先端のMinGW-w64をインストールすることを強くお勧めします。幸い、 rubenvbは64ビットWindows(別名x64)と32ビットWindows(別名x86)の両方のバリエーションでMinGW-w64ツールチェーンを親切に構築しているため、自分でコンパイルする必要はありません。OSに応じてダウンロードするだけです。注:これらのリンクは、MinGW-w64の最新の(この回答を書いている時点で)安定したビルド、つまりGCC4.7.2に基づくものを指しています。重要:MinGW-w64が%PATH%
環境変数に含まれていることを確認してください。
必要なもう1つのソフトウェアは、CMake(人気のあるビルドシステム)です。繰り返しますが、Unixを使用している場合は、すでにインストールされている可能性があります。Windowsを使用している場合は、ダウンロードしてインストールするだけです。重要:CMakeが%PATH%
環境変数に含まれていることを確認してください。
最後に必要なのはPythonです。繰り返しになりますが、Unixを使用している場合は、すでにシステムにインストールされています。そうでなければ、あなたはすでに何をすべきかを知っています。:)公式には、Pythonには2つのバージョンがあります:2.7.3と3.xx-両方をダウンロードしてインストールする必要があります。Pythonは、開発者のマシンに欠かせないソフトウェアです。重要:Python 2.7.3(3.xxではありません!)が%PATH%
環境変数に含まれていることを確認してください。
MinGW-w64、CMake、Pythonがインストールされたので、LLVMとClangをビルドする準備が整いました。苦痛を和らげるには、Out-of-Source Buildersプロジェクトに移動し、 [ガイド:MinGW-w64を使用して64ビットLLVMとClang for Windows(64ビット)をビルドする]までスクロールします。32ビットWindowsを使用している場合は、タイトルの64ビット(関係ありません)に注意を払うのではなく、そこにある指示に従ってください。LLVMとClangがビルドされるまで約1時間待ちます。
ほぼ完了です。あとはVimを正しく設定するだけです。ここでは、おそらくあなたのニーズを満たすであろう私の構成を簡単に提供します。
構成neocomplcache
:
let g:neocomplcache_enable_at_startup = 1
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
let g:neocomplcache_min_syntax_length = 2
if !exists('g:neocomplcache_force_omni_patterns')
let g:neocomplcache_force_omni_patterns = {}
endif
let g:neocomplcache_force_overwrite_completefunc = 1
let g:neocomplcache_force_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
let g:neocomplcache_force_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)'
\ . '\|\h\w*::'
let g:neocomplcache_force_omni_patterns.objc = '[^.[:digit:] *\t]\%(\.\|->\)'
\ . '\|\h\w*::'
let g:neocomplcache_force_omni_patterns.objcpp = '[^.[:digit:] *\t]\%(\.\|->\)'
\ . '\|\h\w*::'
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
構成clang_complete
:
let g:clang_use_library = 1
let g:clang_auto_select = 0
let g:clang_complete_auto = 0
let g:clang_complete_copen = 1
let g:clang_complete_macros = 1
let g:clang_complete_patters = 1
let g:clang_library_path = 'D:/Toolchains/x64/LLVM/3.3/bin'
let g:clang_auto_user_options = 'path, .clang_complete'
これらのプラグインの両方の詳細については、Vimのヘルプドキュメントを使用してください::h clang_complete
および:h neocomplcache
。特にで、微調整するオプションがたくさんありますneocomplcache
。私の見解では、Vimを使用するC ++開発者には、両方のプラグインが必要です。
注:ここに記載されている手順の一部を完了する方法がわからない場合は、StackOverflowで追加の質問をするか、この回答の冒頭に記載されている理由で他の場所を探す必要があります。
これがお役に立てば幸いです。今後の開発努力のためにVimをもっと支持していただければ幸いです。:)