亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

Vim自動補全插件----YouCompleteMe安裝與配置

2024-06-28 13:27:11
字體:
來源:轉載
供稿:網友
Vim自動補全插件----YouCompleteMe安裝與配置Vim自動補全插件----YouCompleteMe安裝與配置

使用Vim編寫程序少不了使用自動補全插件,在linux下有沒有類似VS中的Visual Assist X這么方便快捷的補全插件呢?以前用的是neocomplcache+code_complete+omnicppcomplete,但效果還是不是很好??吹接衁CM后前面的插件可以說拜拜了。

YouCompleteMe:一個隨鍵而全的、支持模糊搜索的、高速補全的插件。YCM 由 google 公司搜索項目組的軟件工程師 Strahinja Val Markovic 所開發,YCM 后端調用 libclang(以獲取AST,當然還有其他語言的語義分析庫)、前端由 C++ 開發(以提升補全效 率)、外層由 python 封裝(以成為 vim 插件),它可能是我見過安裝最復雜的 vim 插件了。

先看個補全效果圖

還可以進行路徑自動補全

錄了張使用YCM和ultisnips的動態giif補全效果圖,這兩者配合起來寫代碼很爽。

我的vim的配置可以看這里

YouCompleteMe要求Vim版本7.3.584+,前面已經介紹了編譯安裝Vim7.4方法。 同時YouCompleteMe要求clang版本為3.3以上。如果想獲取最新的clang可以使用SVN,按照其官網上介紹的方法編譯安裝。我們這里介紹源碼編譯安裝clang3.3。

  • Vim自動補全插件----YouCompleteMe安裝與配置
    • 編譯安裝IIvm-clang3.3
    • 安裝clang標準庫
    • 安裝配置YouCompleteMe

編譯安裝llvm-clang3.3

先下載如下4個源碼:llvm-3.3源碼clang-3.3源碼clang-tools-extra-3.3源碼compiler-rt-3.3源碼建立目錄:

mkdir ~/llvm-clang

分別解壓上面下載的4個文件到上述目錄

tar -xvzf llvm-3.3.src.tar.gz

tar -xvzf compiler-rt-3.3.src.tar.gz

tar -xvzf clang-tools-extra-3.3.src.tar.gz

tar -xvzf cfe-3.3.src.tar.gz

再將工具移動到llvm的相應目錄下,使得clang,clang-tools-extra和compiler-rt就可以和llvm一起編譯了:

mv cfe-3.3.src/ llvm-3.3.src/tools/clang/

mv clang-tools-extra-3.3.src/ llvm-3.3.src/tools/clang/extra/

mv compiler-rt-3.3.src/ llvm-3.3.src/PRojects/compiler-rt/

下載最新的LLVM、clang 及輔助庫源碼可用:

        cd ~/llvm-clang        svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm        cd llvm/tools        svn co http://llvm.org/svn/llvm-project/cfe/trunk clang        cd ../..        cd llvm/tools/clang/tools        svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra        cd ../../../..        cd llvm/projects        svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt        cd ..

返回~/llvm-clang目錄,并新建一個目錄llvm-build專門用于編譯llvm-clang,使得不污染源碼。

mkdir llvm-build

cd llvm-build/

../llvm-3.3.src/configure --enable-optimized

建立編譯環境

此種配置后,llv-clang默認安裝到目錄 /usr/local/ 下, 如果想改變安裝目錄,則加上配置: --prefix=Path 來制定 輸入make -j4

(本人機器為雙核)開始編譯

sudo make install

進行安裝

如要卸載則在該目錄下輸入

sudo make uninstall

安裝好后,輸入clang -v查看版本信息:

安裝clang標準庫

clang 的標準庫————libc++(接口層)和 libc++abi(實現層)需要安裝頭文件和動態鏈接庫(*.so)。

  • 安裝libc++
            cd ~/llvm-clang        svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx        cd libcxx/lib        ./buildit

頭文件已經生成到~/llvm-clang/libcxx/include/,要讓 clang 找到必須復制到/usr/include/c++/v1/

cp -r ~/llvm-clang/libcxx/include/ /usr/include/c++/v1/

*.so 文件已生成 ~/llvm-clang/libcxx/lib/libc++.so.1.0,要讓 clang 訪問必須復 制到 /usr/lib/,并創建軟鏈接

    ln -s ~/llvm-clang/libcxx/lib/libc++.so.1.0 ~/llvm-clang/libcxx/lib/libc++.so.1    ln -s ~/llvm-clang/libcxx/lib/libc++.so.1.0 ~/llvm-clang/libcxx/lib/libc++.so    cp ~/dllvm-clang/libcxx/lib/libc++.so* /usr/lib/
類似,源碼安裝 libc++abi 的頭文件和動態鏈接庫:
    cd  ~/llvm-clang/    svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi    cd libcxxabi/lib    ./buildit

頭文件已經生成到~/llvm-clang/libcxxabi/include/,要讓 clang 找到必須復制到/usr/include/c++/v1/

cp -r ~/llvm-clang/libcxxabi/include/ /usr/include/c++/v1/

*.so 文件已生成~/llvm-clang/libcxx/lib/libc++abi.so.1.0,要讓 clang 訪問必 須復制到/usr/lib/,并創建軟鏈接

ln -s ~/llvm-clang/libcxxabi/lib/libc++abi.so.1.0 ~/llvm-clang/libcxxabi/lib/libc++abi.so.1

ln -s ~/llvm-clang/libcxxabi/lib/libc++abi.so.1.0 ~/llvm-clang/libcxxabi/lib/libc++abi.so

cp ~/llvm-clang/libcxxabi/lib/libc++abi.so* /usr/lib/

后續可以通過如下選項進行代碼編譯:

clang++ -std=c++11 -stdlib=libc++ -Werror -Weverything -Wno-disabled-macro- expansion -Wno-float-equal -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno- global-constructors -Wno-exit-time-destructors -Wno-missing-prototypes -Wno-padded -lc++ -lc++abi main.cpp

參數說明:

  • -std=c++11: 使用 C++11 新特性;
  • -stdlib=libc++: 指定使用 clang 的標準庫頭文件 /usr/include/c++/v1/;
  • -Werror: 將所有編譯警告視為編譯錯誤;
  • -Weverything: 打開所有編譯警告選項。在 GCC 中,無法通過單個選項打開所有 編譯警告,必須繁瑣的同時指定 -Wall、-Wextra、以及大量分散的其他選項,為此clang 新增了 -Weverything。當然,有些警告意義不大,完全可忽略,如下;
  • -Wno-disabled-macro-expansion:禁止使用宏表達式,忽略此警告;
  • -Wno-float-equal:浮點類型不應使用 != 和 == 運算符,忽略此警告;
  • -Wno-c++98-compat、-Wno-c++98-compat-pedantic:采用 C++11 新特性的代 碼無法兼容 C++98,忽略此警告;
  • -Wno-global-constructors:在 main() 之前存在執行的代碼,忽略此警告;
  • -Wno-exit-time-destructors:在 main() 之后存在執行的代碼,忽略此警告;
  • -Wno-missing-prototypes:雖有函數定義但缺失函數原型,忽略此警告;
  • -Wno-padded:結構體大小應為 4 字節整數倍,忽略此警告(編譯器自動調整對齊 邊界);
  • -lc++:指定鏈接 /usr/lib/libc++.so 標準庫;
  • -lc++abi:指定鏈接 /usr/lib/libc++abi.so 標準庫。注意:這兩個選項非常重 要,缺失將導致鏈接失敗!

這些參數在YouCompleteMe的配置文件.ycm_extra_conf.py的flags中設置

安裝配置YouCompleteMe
  1. 下載源碼。使用vundle搞定,在vimrc文件中加入Bundle 'Valloric/YouCompleteMe'
  2. 執行命令:
        $ cd ~    $ mkdir ~/ycm_build    $ cd ~/ycm_build    $ cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBclang=ON -DEXTERNAL_LIBCLANG_PATH=CLANG_INSTALL_PATH/libclang.so . ~/.vim/bundle/YouCompleteMe/cpp  
    注意:這里的CLANG_INSTALL_PATH要替換成你自己libclang.so所在的目錄,例如我的是 /ycm_temp/llvmsrc/build/Release+Asserts/lib(即:上面步驟的編譯llvm-clang所生成的),如果安裝了的話在/usr/local/lib/下也有libclang.so,這個目錄也可以。可以通過sudo find / -name "libclang.so" -print查看
  3. 在YouCompleteMe中生成libclang.so和ycm_core.so文件執行make ycm_core,這樣將在~/.vim/bundle/YouCompleteMe/python/目錄下自動生成兩個文件(libclang.so和ycm_core.so)
  4. 這還是不夠的,還必須執行命令:make ycm_support_libs。 這條命令才會生成第三個文件ycm_client_support.so。因為,YouCompleteMe是C/S架構的,所以存在服務器和服務端的說法。
  5. 最后設置.ycm_extra_conf.py文件。
  6. 在.vimrc中添加配置:
    " 自動補全配置set completeopt=longest,menu"讓Vim的補全菜單行為與一般IDE一致(參考VimTip1228)autocmd InsertLeave * if pumvisible() == 0|pclose|endif"離開插入模式后自動關閉預覽窗口inoremap <expr> <CR>       pumvisible() ? "/<C-y>" : "/<CR>""回車即選中當前項"上下左右鍵的行為 會顯示其他信息inoremap <expr> <Down>     pumvisible() ? "/<C-n>" : "/<Down>"inoremap <expr> <Up>       pumvisible() ? "/<C-p>" : "/<Up>"inoremap <expr> <PageDown> pumvisible() ? "/<PageDown>/<C-p>/<C-n>" : "/<PageDown>"inoremap <expr> <PageUp>   pumvisible() ? "/<PageUp>/<C-p>/<C-n>" : "/<PageUp>""youcompleteme  默認tab  s-tab 和自動補全沖突"let g:ycm_key_list_select_completion=['<c-n>']let g:ycm_key_list_select_completion = ['<Down>']"let g:ycm_key_list_previous_completion=['<c-p>']let g:ycm_key_list_previous_completion = ['<Up>']let g:ycm_confirm_extra_conf=0 "關閉加載.ycm_extra_conf.py提示let g:ycm_collect_identifiers_from_tags_files=1" 開啟 YCM 基于標簽引擎let g:ycm_min_num_of_chars_for_completion=2" 從第2個鍵入字符就開始羅列匹配項let g:ycm_cache_omnifunc=0" 禁止緩存匹配項,每次都重新生成匹配項let g:ycm_seed_identifiers_with_syntax=1" 語法關鍵字補全nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>"force recomile with syntastic"nnoremap <leader>lo :lopen<CR>"open locationlist"nnoremap <leader>lc :lclose<CR>"close locationlistinoremap <leader><leader> <C-x><C-o>"在注釋輸入中也能補全let g:ycm_complete_in_comments = 1"在字符串輸入中也能補全let g:ycm_complete_in_strings = 1"注釋和字符串中的文字也會被收入補全let g:ycm_collect_identifiers_from_comments_and_strings = 0nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳轉到定義處

上一篇:ShellScript實用技巧[1]

下一篇:RING3到RING0

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色免费三级| 日韩精品中文字幕在线观看| 高清亚洲成在人网站天堂| 97精品一区二区视频在线观看| 亚洲第一av在线| 午夜精品99久久免费| 日韩中文字幕不卡视频| 欧美性xxxxx极品娇小| 日韩精品亚洲元码| 国产精品视频资源| 欧洲精品毛片网站| 久久视频在线看| 亚洲精品国精品久久99热| 色综合亚洲精品激情狠狠| 欧美亚洲在线视频| 国产精品青青在线观看爽香蕉| 欧美激情视频在线观看| 中文在线资源观看视频网站免费不卡| 精品国内产的精品视频在线观看| 性金发美女69hd大尺寸| 欧美三级免费观看| 97视频在线观看免费高清完整版在线观看| 欧美激情啊啊啊| 国产精品三级美女白浆呻吟| 日韩av网站导航| 欧美一区二区三区精品电影| 色噜噜亚洲精品中文字幕| 久久免费视频在线| 欧美电影免费观看电视剧大全| 欧美日韩亚洲天堂| 欧美日韩国产激情| 九九热99久久久国产盗摄| 精品一区二区亚洲| 久久99久久亚洲国产| 日韩av影视综合网| 日韩在线不卡视频| 国产精品青草久久久久福利99| 国产视频一区在线| 国产精品国产三级国产aⅴ9色| 麻豆国产精品va在线观看不卡| 亚洲性视频网站| 欧美激情一级欧美精品| 亚洲美女av在线播放| 中文欧美日本在线资源| 国产精品成人久久久久| 91免费国产视频| 国产香蕉精品视频一区二区三区| 亚洲精品一区av在线播放| 疯狂做受xxxx高潮欧美日本| 91精品国产91久久| 日韩亚洲第一页| 91美女片黄在线观| 久久免费少妇高潮久久精品99| 欧美在线性爱视频| 日韩中文字幕在线看| 国产精品一区二区久久国产| 欧美性开放视频| 亚洲欧美日韩成人| 亚洲精品久久久久久久久久久久| 一区二区三区美女xx视频| 中文字幕久久久| 中文字幕国产亚洲2019| 欧美福利视频在线观看| 欧美日韩亚洲系列| 日韩成人在线视频网站| 成人精品在线视频| 欧美黄色片在线观看| 久久精品视频99| 国产精品一区二区在线| 亚洲视频在线视频| 日韩精品一二三四区| 亚洲精品免费在线视频| 国产精品欧美一区二区三区奶水| 亚洲国产精品yw在线观看| 91影视免费在线观看| 色久欧美在线视频观看| 成人在线国产精品| 91黑丝在线观看| 国产精品久久久久久久久| 国产又爽又黄的激情精品视频| 亚洲欧美国产va在线影院| 亚洲第一av网站| 国产成人综合亚洲| 91中文字幕在线| 在线视频日韩精品| 久久久精品久久久久| 精品亚洲一区二区三区在线观看| 久久中文字幕在线视频| 91精品国产九九九久久久亚洲| 欧美丰满少妇xxxxx| 97人人爽人人喊人人模波多| 亚洲r级在线观看| 国产精品一区二区三区久久久| 欧美影院成年免费版| 欧美激情性做爰免费视频| 国模私拍视频一区| 久久久亚洲欧洲日产国码aⅴ| 国产精品黄色av| 亚洲欧美在线x视频| 亚洲国内精品视频| 国产成人精品在线视频| 不卡在线观看电视剧完整版| 成人免费视频在线观看超级碰| 欧美激情精品久久久| 成人激情视频免费在线| 精品夜色国产国偷在线| 成人在线视频网站| 欧美另类在线播放| 亚洲精品国产成人| 91在线免费观看网站| 国产精品久久久久久久app| 亚洲va欧美va国产综合久久| 色综合色综合网色综合| 91久久精品国产| 久久免费少妇高潮久久精品99| 国产亚洲一级高清| 欧美怡春院一区二区三区| 不卡在线观看电视剧完整版| 91久久久久久久久久| 成人精品视频在线| 国产中文字幕亚洲| 国产亚洲美女久久| 精品亚洲夜色av98在线观看| 亚洲四色影视在线观看| 成人免费网视频| 国产成人综合精品在线| 久久久女女女女999久久| 亚洲精品国产精品国自产观看浪潮| 欧美激情久久久久久| 欧美裸体xxxxx| 国产99久久精品一区二区永久免费| 美女精品久久久| 成人免费淫片视频软件| 亚洲大胆人体在线| 成人黄色午夜影院| 91精品久久久久久久久久| 国产精品高潮呻吟久久av野狼| 亚洲国产精品久久| 精品久久久久久亚洲精品| 成人一区二区电影| 亚洲成人激情小说| 久久久久国产精品www| 日韩电影中文 亚洲精品乱码| 亚洲激情电影中文字幕| 久久久人成影片一区二区三区观看| 国产亚洲美女精品久久久| 亚洲人成亚洲人成在线观看| 国产香蕉97碰碰久久人人| 日本成人激情视频| 亚洲欧美中文另类| 欧美高清视频在线| 亚洲黄在线观看| 日韩欧美在线视频观看| 岛国精品视频在线播放| 欧美日本黄视频| 欧美在线视频免费观看| 日韩极品精品视频免费观看| 欧美日本在线视频中文字字幕| 日韩av网址在线| 国产视频在线一区二区| 伊人伊成久久人综合网站| 国产精品一区二区久久国产| 久久久久久久久国产精品| 欧美性开放视频|