Vimの自動補完C / C ++

自動補完は、C / C ++言語のようなさまざまな種類のプログラミング言語を扱うプログラマーにとって素晴らしい機能です。 VimエディタWindowsまたはLinuxでこの機能を提供します。 VimでのC / C ++の自動補完は、以前にタグ保存したファイルからタイプされた単語を検索します。 ユーザは、システムのハードウェア構成要素、すなわちキーボードを利用して、格納されたタグを調べるプロセスを早急に開始するためのキー構成する 。 しかし、意味を成さない言葉には目を開いておくのが賢明でしょう。

  • インストール
  • 設定
  • つかいます
  • リンク集

このチュートリアルはLinux上でVimを動かしている人を対象としています。 オートコンプリートはLinuxユーザーにはなじみのある機能ですが、文脈上意味のない単語を示唆することもあります。 オートコンプリートでは、たとえばコード内のその時点でメソッドが想定されているときに型が提案される可能性があるため、プログラミング時にこれはイライラすることがあります。

クラスplop(){protected:int plopons; public:plop(){} void plopez(){}}; int main(){plop p; p。 // < - Ctrl + Pで連続性を提案します。plopez、plop ...またはcloest corestforcémentploponsは0を返します。 } 

ctags Vimに基づいたプラグインを使用すると、単語が使用されている文脈を考慮に入れた、よりインテリジェントなオートコンプリートを作成できます。

インストール

ctagsをインストールすることから始めます。 たとえば、DebianまたはDebianベースのディストリビューション(ubuntu、xandrosなど)では、次のようになります。

 sudo aptitudeのアップデートsudo aptitude safe-upgrade sudo aptitudeのインストールexuberant-ctags 

また、自動補完のためにVimプラグインを回復します。

//www.vim.org/scripts/script.php?script_id=1520

自己完結に関するすべてのことは〜/で行います。 Vim:

 mkdir -p〜/ .vim /タグmv omnicpp * zip〜/ .vim cd〜/ .vim解凍omnicpp * zip cd - 

CtagsはヘッダQT、OpenGL、SDLの問題を考慮することができます。 ただし、STLの場合は、ここで「単純」なヘッダーを取得する必要があります。

//www.vim.org/scripts/script.php?script_id=2358

アーカイブを解凍し、STLからタグを作成します。

 tar xjvf cpp_src.tar.bz2 ctags -R - c ++ - 種類= + p - フィールド= + iS --extra = + q - 言語力= C ++ cpp_src && mvタグ〜/ .vim / tags / stl 

インストールされているライブラリのタグが生成されるようになりました(ライブラリが他の場所にインストールされている場合は調整されます)。 たとえば、OpenGL、SDL、QTの各ライブラリでは、単に次の3つのコマンドを入力します。

c

 タグ-R - c ++ - 種類= + p - フィールド= + ias --extra = + q - 言語力= C ++ / usr / include / GL / && mvタグ〜/ .vim / tags / gl ctags - R - c ++ - 種類= + p - フィールド= + ias --extra = + q - 言語力= C ++ / usr / include / SDL / && mvタグ〜/ .vim / tags / sdl ctags -R - -c ++ - 種類= + p - フィールド= + ias --extra = + q - 言語力= C ++ / usr / include / qt4 / && mvタグ〜/ .vim / tags / qt4 

設定

それでは、プラグインファイルとさまざまなタグを読み込むようにvimに指示する必要があります。 これを行うには、ファイルの最後に〜/を追加するだけです。 次の行を削除してください。

 「必須タグはnocpファイルタイププラグインを設定する」 - 追加のタグをここに追加するか、使用されていないものをコメントアウトするset tags + =〜/ .vim / tags / stl set tags + =〜/ .vim / tags / gl set tags .vim / tags / sdl set tags + =〜/ .vim / tags / qt4 "自分のプロジェクトのタグをCTRL + F12で作成" map:!ctags -R - c ++ - 種類= + p - フィールド= + iaS - -extra = + q。 noremap:!ctags -R - c ++ - types = + p - フィールド= + iS --extra = + q。 inoremap:!ctags -R - c ++ - 種別= + p - フィールド= + iS --extra = + q。 "OmniCpp_NamespaceSearch = 1、OmniCpp_GlobalScopeSearch = 1、OmniCpp_ShowAccess = 1、OmniCpp_MayCompleteDot = 1、OmniCpp_MayCompleteArrow = 1、OmniCpp_MayCompleteScope = 1とします。 CursorMovedI、InsertLeave * pumvisible()== 0の場合|サイレント! pclose | endif set completeopt = menuone、メニュー、最長、プレビュー 

タグが一部のファイルに対してのみ生成された場合は、行の先頭に追加して他のファイルにコメントを付けます。 例えば〜/.vim/tags/glと〜/ .vim / tags / sdlを生成していないとします。

 set tags + =〜/ .vim / tags / stl "set tags + =〜/ .vim / tags / gl" set tags + =〜/ .vim / tags / sdl set tags + =〜/ .vim / tags / qt4 

ファイルを保存して、それらが〜/への変更を反映するように(再)vimを起動するだけです。 Vimrc。

つかいます

以前にタグ付けされたもの(このチュートリアルではSTL、QT、SDL、およびOpenGLのタグ)はすべて自動補完で既に使用可能です。 ctrl pまたはnを押すだけです。 リストが表示されたら、矢印を使用して適切な提案を強調表示してEnterキーを押すことができます。

しかし、それは完全には終わっていません。 開発中のプロジェクトに固有のシンボル(変数、関数、型など)のタグを再生成する必要があります。 これでもう一度タグファイルが生成されます。 もちろん、プロジェクトのシンボルを追加、削除、または変更して最新の状態にするたびにファイルが更新されます。

ごく一般的なことですが、ctagsのプロセスを起動するためにキーボードのキーをマッピングすることをお勧めします。 私が与えたサンプルファイル〜/ .Vimrcでは、これはF12を押すことによって保証されます。

リンク集

//vim.wikia.com/wiki/C++_code_completion

//www.vim.org/scripts/script.php?script_id=1520

//www.vim.org/scripts/script.php?script_id=2358

前の記事 次の記事

トップのヒント