YouCompletteMe
15685 ワード
原文: http://blog.marchtea.com/archives/161#rd?sukey=fc78a68049a14bb2ba33c15948d34749e1eb616df07efe977573d59996ea9b63dc82be61d5771f948f5d8f01a917acd7
このプラグインを初めて聞いたのですが、偶然に他人のブログを見ました。このプラグインの名前を聞きました。訓練期間中にインストールを完成するつもりでしたが、ネットがあまり力がなくて、家に帰りました。準備作業を始めた時、このプラグインは簡単にインストールできないと分かりました。(この方面の内容については、他の記事を参照してください)しかし、総報酬があります。インストール後はこのプラグインを使います。
このプラグインの違いは何ですか?
YouCompletteMeの特別なところ
語義に基づいて補完する
周知のように、
テキストの自動補完という機能には、主に二つの実現方法があります。テキストに基づく 私たちがよく使う
当てる
テキストによる正規表現のマッチングは、生成されたtags(語義に基づく 名前の通り、ソースファイルを分析し、文法的に分析して補完します。ソースファイルを分析するので、意味に基づいた補完は正確にできます。しかし、これは明らかにvimではあり得ません。また、長年にわたって発展してきました。文法の解析が非常に難しいため、適切なツールが現れませんでした。
統合は複数のプラグインを実現しました。 clangCommplete AutoComppPop スーパーtab neocomplcache Syntic(同様の機能は、c/c++/obj-cコードのみ) サポート言語 c c++ obj-c 。 python 他の言語については、vim設定の
既知の*javascript--同前for_vimがあります。 * ruby/java—eclim
効果図を使う
使用感はIDEと同じで、自動補完します。 。.悪くしなくてもtags を生成します。補足は正確で、速度も速くて、遅延がないです。 は、tagsのようなジャンプをサポートしています。定義された場所にジャンプし、使用場所 にジャンプします。エラーメッセージがスマートで、本当にシルクのように柔らかくて、入力しないでください。 です。
インストール
多くのメリットを説明しました。インストールといえば、以前の他のvimプラグインとは違って、YCMはコンパイル型のプラグインです。ダウンロードが終わったら、手動でコンパイルしてから使えるようになります。他のプラグインに対応すると、Vimのファイルを該当フォルダに捨てるだけでいいです。YCMを使うのは難しいです。
取り付け準備最新版のVim(7.3.5+)は、コンパイル時に+pythonフラグを追加します。 cmake(macはhomebrewによってインストールされ、 は、vimを管理するプラグイン をインストールするvundleプラグインをインストールする。
macでクイックインストール
コンパイルインストールを行います。
通常、YCMはclangのカバンをダウンロードします。もしすでにあったら、システム
このようにインストールが完了しました。vimを開けて、もしYCMがコンパイルされていないというヒントがなかったら、インストールが成功したと説明します。
手動でコンパイルしてインストールします
インストールされたスクリプトはいつでも使いやすいというわけではなく、少なくとも私にとってはこのようなものです。インストールが終わったら問題が発生しました。issue铉809.最新のclangバイナリファイルYCM要求 です。 python-devをインストールします。(uuntuでは コンパイル ここで注意したいのは、~/ycmuutemp/llvmuroot udirに含まれているのは、第1のステップでダウンロードした圧縮パケットから解凍された内容(
このように完成して、YCMの提供する完全に見劣りがしないことを始めます。大型IDEの提供する自動補完機能に負けないでしょう。
設定
多くのvimプラグインと違って、YCMはまずコンパイルが必要です。また、配置が必要です。vimが起動した後、YCMは現在のパスと上位のパスの
一般的には、
このプラグインを初めて聞いたのですが、偶然に他人のブログを見ました。このプラグインの名前を聞きました。訓練期間中にインストールを完成するつもりでしたが、ネットがあまり力がなくて、家に帰りました。準備作業を始めた時、このプラグインは簡単にインストールできないと分かりました。(この方面の内容については、他の記事を参照してください)しかし、総報酬があります。インストール後はこのプラグインを使います。
このプラグインの違いは何ですか?
YouCompletteMeの特別なところ
語義に基づいて補完する
周知のように、
Vim
はテキストエディタである。つまり、テキストの内容が何であるかにかかわらず、その基本的な作業はテキストを編集することである。Vim
はプログラマによって使用された後、IDEと同じ作業を徐々に負担され、テキスト自動補完(e.acp
、omnicppcompleter
)、コードチェック(Syntastic
)などが行われる。テキストの自動補完という機能には、主に二つの実現方法があります。
omnicppcompleter
、acp
、vimが持っているc-x, c-n
の実現方式はテキストに基づいています。もっと分かりやすい言い方は、つまり1つの文字です。当てる
テキストによる正規表現のマッチングは、生成されたtags(
ctags
を用いて生成される)に基づいて自動的に補完される効果がある。clang/llvm
もYouCompleteMe
に基づいて構築されている。統合は複数のプラグインを実現しました。
clang/llvm
を呼び出してマッチングさせるので、omnifunc
、php
などの言語もサポートされている。既知の*javascript--同前for_vimがあります。 * ruby/java—eclim
効果図を使う
使用感
ruby
のファイルに基づいて補完するinclude
強制検出インストール
多くのメリットを説明しました。インストールといえば、以前の他のvimプラグインとは違って、YCMはコンパイル型のプラグインです。ダウンロードが終わったら、手動でコンパイルしてから使えるようになります。他のプラグインに対応すると、Vimのファイルを該当フォルダに捨てるだけでいいです。YCMを使うのは難しいです。
取り付け準備
:w
、uuntuはvim --version
によってインストールされてもよい)macでクイックインストール
brew install cmake
に下記のコードを追加します。sudo apt-get install cmake
保存終了後にvimを開き、正常モードで入力します。.vimrc
Bundle 'Valloric/YouCompleteMe'
を待ってYouCompletteMeをインストールしました。コンパイルインストールを行います。
:BundleInstall
c-familyの補完が必要でなければ、vundle
を除去できます。cd ~/.vim/bundle/YouCompleteMe
./install --clang-completer
の補完が必要ならば、--clang-completer
を追加してください。通常、YCMはclangのカバンをダウンロードします。もしすでにあったら、システム
c#
を使ってもいいです。このようにインストールが完了しました。vimを開けて、もしYCMがコンパイルされていないというヒントがなかったら、インストールが成功したと説明します。
手動でコンパイルしてインストールします
インストールされたスクリプトはいつでも使いやすいというわけではなく、少なくとも私にとってはこのようなものです。インストールが終わったら問題が発生しました。issue铉809.
--omnisharp-completer
でインストールが完了または使用されています。--system-libclang
最新の倉庫を取得し、:BundleInstall
を使用して倉庫の完全性を確認した後、インストールプロセスを開始する。git clone --recursive https://github.com/Valloric/YouCompleteMe.git
バージョン>3.2をダウンロードします。一般的には最新のダウンロード.git submodule update --init --recursive
を使用します。macではデフォルトで提供します。そうでなければcommand line toolsをインストールしてください。)cd ~ mkdir ycm_build cd ycm_build cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/cpp make ycm_support_libs
clang
を含む)です。 sudo apt-get install python-dev
などのファイル)このように完成して、YCMの提供する完全に見劣りがしないことを始めます。大型IDEの提供する自動補完機能に負けないでしょう。
設定
多くのvimプラグインと違って、YCMはまずコンパイルが必要です。また、配置が必要です。vimが起動した後、YCMは現在のパスと上位のパスの
include
を探します。一般的には、
bin
ディレクトリの下にデフォルトのテンプレートを置きます。その後、別の項目によって、現在のディレクトリの下に.ycm_extra_conf.py
をコピーします。# This file is NOT licensed under the GPLv3, which is the license for the rest # of YouCompleteMe. # # Here's the license text for this file: # # This is free and unencumbered software released into the public domain. # # Anyone is free to copy, modify, publish, use, compile, sell, or # distribute this software, either in source code form or as a compiled # binary, for any purpose, commercial or non-commercial, and by any # means. # # In jurisdictions that recognize copyright laws, the author or authors # of this software dedicate any and all copyright interest in the # software to the public domain. We make this dedication for the benefit # of the public at large and to the detriment of our heirs and # successors. We intend this dedication to be an overt act of # relinquishment in perpetuity of all present and future rights to this # software under copyright law. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # # For more information, please refer to <http://unlicense.org/> import os import ycm_core # These are the compilation flags that will be used in case there's no # compilation database set (by default, one is not set). # CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR. flags = [ '-Wall', '-Wextra', #'-Werror', #'-Wc++98-compat', '-Wno-long-long', '-Wno-variadic-macros', '-fexceptions', '-stdlib=libc++', # THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which # language to use when compiling headers. So it will guess. Badly. So C++ # headers will be compiled as C headers. You don't want that so ALWAYS specify # a "-std=<something>". # For a C project, you would set this to something like 'c99' instead of # 'c++11'. '-std=c++11', # ...and the same thing goes for the magic -x option which specifies the # language that the files to be compiled are written in. This is mostly # relevant for c++ headers. # For a C project, you would set this to 'c' instead of 'c++'. '-x', 'c++', '-I', '.', '-isystem', '/usr/include', '-isystem', '/usr/local/include', '-isystem', '/Library/Developer/CommandLineTools/usr/include', '-isystem', '/Library/Developer/CommandLineTools/usr/bin/../lib/c++/v1', ] # Set this to the absolute path to the folder (NOT the file!) containing the # compile_commands.json file to use that instead of 'flags'. See here for # more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html # # Most projects will NOT need to set this to anything; you can just change the # 'flags' list of compilation flags. Notice that YCM itself uses that approach. compilation_database_folder = '' if