日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Vim-安装 YouCompleteMe

發(fā)布時(shí)間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vim-安装 YouCompleteMe 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:Vim安裝YouCompleteMe插件。

安裝前的準(zhǔn)備

1.首先必須要保證Vim的版本至少是7.3584,并且支持python2腳本。

在vim中輸入:version 來(lái)查看版本,如果版本低于7.3.584,那么就需要重裝vim。 直接在終端中輸入python就可查看自己的python版本號(hào)。

2.安裝vundle插件

首先保證在用戶目錄下有.vim文件夾和.vimrc文件,沒(méi)有就新建。

[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>??
  • 若終端里輸出版本信息則說(shuō)明安裝成功。

    使用git安裝Vundle

    [cpp]?view plaincopy print?
  • <span?style="font-size:18px;">$?git?clone?https://github.com/VundleVim/Vundle.vim.git?~/.vim/bundle/Vundle.vim</span>??

  • 修改配置文件

    以下是官方配置文件,根據(jù)修改即可。 [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://vim-scripts.org/vim/scripts.html??
  • 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??
  • "設(shè)置Vundle的運(yùn)行路徑并初始化??
  • set?rtp+=~/.vim/bundle/Vundle.vim??
  • call?vundle#begin()??
  • "?Vundle安裝位置與插件路徑不同時(shí),需要Vundle插件的路徑??
  • "call?vundle#begin('~/some/path/here')??
  • "------------------要安裝的插件不能寫(xiě)在此行前!------------------??
  • ??
  • "Vundle對(duì)自己的調(diào)用,不可刪去??
  • Plugin?'VundleVim/Vundle.vim'??
  • ??
  • "以下是所支持的各種不同格式的示例??
  • "需要安裝的插件應(yīng)寫(xiě)在調(diào)用的vundle#begin和vundle#end之間??
  • ??
  • "如果插件托管在Github上,寫(xiě)在下方,只寫(xiě)作者名/項(xiàng)目名就行了??
  • ??
  • Plugin?'Valloric/YouCompleteMe'??
  • Plugin?'majutsushi/tagbar'??
  • Plugin?'vim-syntastic/syntastic'??
  • Plugin?'vim-airline/vim-airline-themes'??
  • Plugin?'vim-airline/vim-airline'??
  • ??
  • "如果插件來(lái)自vim-scripts(官方),寫(xiě)插件名就行了??
  • "?Plugin?'L9'??
  • ??
  • "如果Git倉(cāng)庫(kù)不在Github上,需要提供完整的鏈接??
  • "?Plugin?'git://git.wincent.com/command-t.git'??
  • ??
  • "本地的插件需要提供文件路徑??
  • "?Plugin?'file:///home/gmarik/path/to/plugin'??
  • "一定要確保插件就在提供路徑的文件夾中(沒(méi)有子文件夾,直接在這層目錄下)??
  • ??
  • "運(yùn)行時(shí)目錄的路徑??
  • "Plugin?'rstacruz/sparkup',?{'rtp':?'vim/'}??
  • ??
  • "避免插件間的命名沖突??
  • "Plugin?'ascenator/L9',?{'name':?'newL9'}??
  • ??
  • "------------------要安裝的插件不能寫(xiě)在此行后!------------------??
  • call?vundle#end()????????????"?required??
  • filetype?plugin?indent?on????"?required??
  • "要忽略插件縮進(jìn)更改,請(qǐng)改用:??
  • "filetype?plugin?on??
  • "??
  • "?安裝插件的相關(guān)指令??
  • ":PluginList????????????-?列出已安裝插件??
  • ":PluginInstall?????????-?安裝新添加的插件;添加`!`或使用`:PluginUpdate`來(lái)更新已安裝插件??
  • ":PluginSearch?xxx??????-?尋找名字帶有xxx的插件;添加`!`刷新本地緩存??
  • ":PluginClean???????????-?刪除已經(jīng)從列表移除的插件;添加`!`靜默卸載??
  • ":h?????????????????????-?幫助和說(shuō)明文檔???
  • "Vundle的設(shè)置到此為止了??
  • "</span>??


  • 安裝完成之后在vim中執(zhí)行 [cpp]?view plaincopy print?
  • :PluginInstall??
  • 等待安裝即可(安裝時(shí)間視網(wǎng)速而定完成后會(huì)有Done!提示)如圖所示:

    安裝開(kāi)始

    1.Ubuntu快速安裝

    下載完成后檢查倉(cāng)庫(kù)的完整性

    切換到Y(jié)ouCompleteMe目錄下,執(zhí)行以下命令: [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需要編譯之后才能使用所以接下來(lái)需要編譯 確保安裝Cmake,和一些Python頭文件,如果沒(méi)有安裝執(zhí)行下面的語(yǔ)句 [cpp]?view plaincopy print?
  • sudo?apt-get?install?build-essential?cmake??
  • sudo?apt-get?install?python-dev?python3-dev??
  • 不需要語(yǔ)義補(bǔ)全: [cpp]?view plaincopy print?
  • cd?~/.vim/bundle/YouCompleteMe??
  • ./install.py??
  • 需要語(yǔ)義補(bǔ)全的: [cpp]?view plaincopy print?
  • cd?~/.vim/bundle/YouCompleteMe??
  • ./install.py?--clang-completer??
  • 過(guò)程有點(diǎn)漫長(zhǎng),期間可以看個(gè)電影放松一下。

    配置YCM

    打開(kāi).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???
  • 在這個(gè)文件中加入 [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.完全安裝

    未完待續(xù)

    結(jié)束

    轉(zhuǎn)載于:https://www.cnblogs.com/JohnABC/p/7376322.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的Vim-安装 YouCompleteMe的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。