生活随笔
收集整理的這篇文章主要介紹了
Vim-安装 YouCompleteMe
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:Vim安裝YouCompleteMe插件。
安裝前的準備
1.首先必須要保證Vim的版本至少是7.3584,并且支持python2腳本。
在vim中輸入:version 來查看版本,如果版本低于7.3.584,那么就需要重裝vim。 直接在終端中輸入python就可查看自己的python版本號。
2.安裝vundle插件
首先保證在用戶目錄下有.vim文件夾和.vimrc文件,沒有就新建。
[cpp]?view plaincopy print?
<span?style="font-size:18px;">cd???mkdir?.vim??vim?.vimrc</span>?? 安裝git
Ubuntu下直接輸入以下代碼即可:
[cpp]?view plaincopy print?
<span?style="font-size:18px;">sudo?apt-get?install?git</span>?? 使用如下命令,查看git版本
[cpp]?view plaincopy print?
<span?style="font-size:18px;">git?--version</span>?? 若終端里輸出版本信息則說明安裝成功。
使用git安裝Vundle
[cpp]?view plaincopy print?
<span?style="font-size:18px;">$?git?clone?https: 修改配置文件
以下是官方配置文件,根據修改即可。
[cpp]?view plaincopy print?
<span?style="font-size:18px;">set?nocompatible??????????????"?be?iMproved,?required??filetype?off??????????????????"?required????"?set?the?runtime?path?to?include?Vundle?and?initialize??set?rtp+=~/.vim/bundle/Vundle.vim??call?vundle#begin()??"?alternatively,?pass?a?path?where?Vundle?should?install?plugins??"call?vundle#begin('~/some/path/here')????"?let?Vundle?manage?Vundle,?required??Plugin?'VundleVim/Vundle.vim'????"?The?following?are?examples?of?different?formats?supported.??"?Keep?Plugin?commands?between?vundle#begin/end.??"?plugin?on?GitHub?repo??Plugin?'tpope/vim-fugitive'??"?plugin?from?http:Plugin?'L9'??"?Git?plugin?not?hosted?on?GitHub??Plugin?'git://git.wincent.com/command-t.git'??"?git?repos?on?your?local?machine?(i.e.?when?working?on?your?own?plugin)??Plugin?'file:///home/gmarik/path/to/plugin'??"?The?sparkup?vim?script?is?in?a?subdirectory?of?this?repo?called?vim.??"?Pass?the?path?to?set?the?runtimepath?properly.??Plugin?'rstacruz/sparkup',?{'rtp':?'vim/'}??"?Install?L9?and?avoid?a?Naming?conflict?if?you've?already?installed?a??"?different?version?somewhere?else.??Plugin?'ascenator/L9',?{'name':?'newL9'}????"?All?of?your?Plugins?must?be?added?before?the?following?line??call?vundle#end()????????????"?required??filetype?plugin?indent?on????"?required??"?To?ignore?plugin?indent?changes,?instead?use:??"filetype?plugin?on??"??"?Brief?help??"?:PluginList???????-?lists?configured?plugins??"?:PluginInstall????-?installs?plugins;?append?`!`?to?update?or?just?:PluginUpdate??"?:PluginSearch?foo?-?searches?for?foo;?append?`!`?to?refresh?local?cache??"?:PluginClean??????-?confirms?removal?of?unused?plugins;?append?`!`?to?auto-approve?removal??"??"?see?:h?vundle?for?more?details?or?wiki?for?FAQ??"?Put?your?non-Plugin?stuff?after?this?line</span>?? 下面是我的配置文件
[cpp]?view plaincopy print?
<span?style="font-size:18px;">""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""????set?nocompatible??????????????"?be?iMproved,?required??filetype?off??????????????????"?required??"設置Vundle的運行路徑并初始化??set?rtp+=~/.vim/bundle/Vundle.vim??call?vundle#begin()??"?Vundle安裝位置與插件路徑不同時,需要Vundle插件的路徑??"call?vundle#begin('~/some/path/here')??"------------------要安裝的插件不能寫在此行前!------------------????"Vundle對自己的調用,不可刪去??Plugin?'VundleVim/Vundle.vim'????"以下是所支持的各種不同格式的示例??"需要安裝的插件應寫在調用的vundle#begin和vundle#end之間????"如果插件托管在Github上,寫在下方,只寫作者名/項目名就行了????Plugin?'Valloric/YouCompleteMe'??Plugin?'majutsushi/tagbar'??Plugin?'vim-syntastic/syntastic'??Plugin?'vim-airline/vim-airline-themes'??Plugin?'vim-airline/vim-airline'????"如果插件來自vim-scripts(官方),寫插件名就行了??"?Plugin?'L9'????"如果Git倉庫不在Github上,需要提供完整的鏈接??"?Plugin?'git://git.wincent.com/command-t.git'????"本地的插件需要提供文件路徑??"?Plugin?'file:///home/gmarik/path/to/plugin'??"一定要確保插件就在提供路徑的文件夾中(沒有子文件夾,直接在這層目錄下)????"運行時目錄的路徑??"Plugin?'rstacruz/sparkup',?{'rtp':?'vim/'}????"避免插件間的命名沖突??"Plugin?'ascenator/L9',?{'name':?'newL9'}????"------------------要安裝的插件不能寫在此行后!------------------??call?vundle#end()????????????"?required??filetype?plugin?indent?on????"?required??"要忽略插件縮進更改,請改用:??"filetype?plugin?on??"??"?安裝插件的相關指令??":PluginList????????????-?列出已安裝插件??":PluginInstall?????????-?安裝新添加的插件;添加`!`或使用`:PluginUpdate`來更新已安裝插件??":PluginSearch?xxx??????-?尋找名字帶有xxx的插件;添加`!`刷新本地緩存??":PluginClean???????????-?刪除已經從列表移除的插件;添加`!`靜默卸載??":h?????????????????????-?幫助和說明文檔???"Vundle的設置到此為止了??"</span>?? 安裝完成之后在vim中執行
[cpp]?view plaincopy print?
:PluginInstall?? 等待安裝即可(安裝時間視網速而定完成后會有Done!提示)如圖所示:
安裝開始
1.Ubuntu快速安裝
下載完成后檢查倉庫的完整性
切換到YouCompleteMe目錄下,執行以下命令:
[cpp]?view plaincopy print?
git?submodule?update?--init?--recursive?? [cpp]?view plaincopy print?
<pre?code_snippet_id="2320416"?snippet_file_name="blog_20170408_8_6616764"></pre>??<pre></pre>??<pre></pre>??<pre></pre>?? 安裝編譯YouCompleteMe的必要插件
YouCompleteMe需要編譯之后才能使用所以接下來需要編譯 確保安裝Cmake,和一些Python頭文件,如果沒有安裝執行下面的語句
[cpp]?view plaincopy print?
sudo?apt-get?install?build-essential?cmake??sudo?apt-get?install?python-dev?python3-dev?? 不需要語義補全:
[cpp]?view plaincopy print?
cd?~/.vim/bundle/YouCompleteMe??./install.py?? 需要語義補全的:
[cpp]?view plaincopy print?
cd?~/.vim/bundle/YouCompleteMe??./install.py?--clang-completer?? 過程有點漫長,期間可以看個電影放松一下。
配置YCM
打開.vimrc文件加上
[cpp]?view plaincopy print?
"YouCompleteMe?插件配置??let?g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'??nnoremap?<leader>jd?:YcmCompleter?GoToDefinitionElseDeclaration<CR>??let?g:ycm_python_binary_path?=?'/usr/bin/python3'??nmap<C-a>?:YcmCompleter?FixIt<CR>?? 然后修改.ycm_extra_conf.py?
[cpp]?view plaincopy print?
vim?.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py??? 在這個文件中加入
[cpp]?view plaincopy print?
'-isystem',??'/usr/include',??'-isystem',??'/usr/include/c++/5.4.0',??'-isystem',??'/usr/include',??'/usr/include/x86_64-linux-gnu/c++',?? 注意以上的路徑都是自己的路徑,參照自己的路徑修改即可。
以下是我的配置文件
[cpp]?view plaincopy print?
#?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',??'-Wno-long-long',??'-Wno-variadic-macros',??'-fexceptions',??'-DNDEBUG',??#?You?100%?do?NOT?need?-DUSE_CLANG_COMPLETER?in?your?flags;?only?the?YCM??#?source?code?needs?it.??'-DUSE_CLANG_COMPLETER',??#?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++',??'-isystem',??'../BoostParts',??'-isystem',??#?This?path?will?only?work?on?OS?X,?but?extra?paths?that?don't?exist?are?not??#?harmful??'/System/Library/Frameworks/Python.framework/Headers',??#'-isystem',??#'../llvm/include',??#'-isystem',??#'../llvm/tools/clang/include',??#'-I',??#'.',??#'-I',??#'./ClangCompleter',??#'-isystem',??#'./tests/gmock/gtest',??#'-isystem',??#'./tests/gmock/gtest/include',??#'-isystem',??#'./tests/gmock',??#'-isystem',??#'./tests/gmock/include',???'-isystem',???'/usr/include',???'-isystem',???'/usr/include/c++/5.4.0',???'-isystem',???'/usr/include',???'/usr/include/x86_64-linux-gnu/c++',??]??????#?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??#??#?You?can?get?CMake?to?generate?this?file?for?you?by?adding:??#???set(?CMAKE_EXPORT_COMPILE_COMMANDS?1?)??#?to?your?CMakeLists.txt?file.??#??#?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?os.path.exists(?compilation_database_folder?):????database?=?ycm_core.CompilationDatabase(?compilation_database_folder?)??else:????database?=?None????SOURCE_EXTENSIONS?=?[?'.cpp',?'.cxx',?'.cc',?'.c',?'.m',?'.mm'?]????def?DirectoryOfThisScript():????return?os.path.dirname(?os.path.abspath(?__file__?)?)??????def?MakeRelativePathsInFlagsAbsolute(?flags,?working_directory?):????if?not?working_directory:??????return?list(?flags?)????new_flags?=?[]????make_next_absolute?=?False????path_flags?=?[?'-isystem',?'-I',?'-iquote',?'--sysroot='?]????for?flag?in?flags:??????new_flag?=?flag????????if?make_next_absolute:????????make_next_absolute?=?False????????if?not?flag.startswith(?'/'?):??????????new_flag?=?os.path.join(?working_directory,?flag?)????????for?path_flag?in?path_flags:????????if?flag?==?path_flag:??????????make_next_absolute?=?True??????????break??????????if?flag.startswith(?path_flag?):??????????path?=?flag[?len(?path_flag?):?]??????????new_flag?=?path_flag?+?os.path.join(?working_directory,?path?)??????????break????????if?new_flag:????????new_flags.append(?new_flag?)????return?new_flags??????def?IsHeaderFile(?filename?):????extension?=?os.path.splitext(?filename?)[?1?]????return?extension?in?[?'.h',?'.hxx',?'.hpp',?'.hh'?]??????def?GetCompilationInfoForFile(?filename?):????#?The?compilation_commands.json?file?generated?by?CMake?does?not?have?entries????#?for?header?files.?So?we?do?our?best?by?asking?the?db?for?flags?for?a????#?corresponding?source?file,?if?any.?If?one?exists,?the?flags?for?that?file????#?should?be?good?enough.????if?IsHeaderFile(?filename?):??????basename?=?os.path.splitext(?filename?)[?0?]??????for?extension?in?SOURCE_EXTENSIONS:????????replacement_file?=?basename?+?extension????????if?os.path.exists(?replacement_file?):??????????compilation_info?=?database.GetCompilationInfoForFile(????????????replacement_file?)??????????if?compilation_info.compiler_flags_:????????????return?compilation_info??????return?None????return?database.GetCompilationInfoForFile(?filename?)??????def?FlagsForFile(?filename,?**kwargs?):????if?database:??????#?Bear?in?mind?that?compilation_info.compiler_flags_?does?NOT?return?a??????#?python?list,?but?a?"list-like"?StringVec?object??????compilation_info?=?GetCompilationInfoForFile(?filename?)??????if?not?compilation_info:????????return?None????????final_flags?=?MakeRelativePathsInFlagsAbsolute(????????compilation_info.compiler_flags_,????????compilation_info.compiler_working_dir_?)????????#?NOTE:?This?is?just?for?YouCompleteMe;?it's?highly?likely?that?your?project??????#?does?NOT?need?to?remove?the?stdlib?flag.?DO?NOT?USE?THIS?IN?YOUR??????#?ycm_extra_conf?IF?YOU'RE?NOT?100%?SURE?YOU?NEED?IT.??????try:????????final_flags.remove(?'-stdlib=libc++'?)??????except?ValueError:????????pass????else:??????relative_to?=?DirectoryOfThisScript()??????final_flags?=?MakeRelativePathsInFlagsAbsolute(?flags,?relative_to?)??????return?{?'flags':?final_flags?}?? 2.完全安裝
未完待續
結束
轉載于:https://www.cnblogs.com/JohnABC/p/7376322.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的Vim-安装 YouCompleteMe的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。