windows7 Cygwin 下安裝 YouCompleteMe 插件


原創文章,歡迎指正!轉載請注明~

從上周就開始想在cygwin上安裝YouCompleteMe插件,按照GITHUB上的官方教程安裝,由於自己的理解失誤,一直搞不清是按照在windows上安裝還是按照在Unix上安裝,加上網絡又不給力,浪費了許多時間。不斷嘗試后,發現在cygwin上安裝與在window和Unix上安裝都不完全相同,網上相關的教程幾乎沒有,所在在此記錄一下經驗和教訓。

GITHUB官方安裝教程:https://github.com/Valloric/YouCompleteMe#full-installation-guide

兩種方法安裝YouCompleteMe插件:

1. vundle安裝YouCompleteMe插件,安裝vundle使用git命令(cygwin自帶的命令,如果沒有就用cygwin的setup.exe安裝一下):

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

配置vundle:打開.vimrc,添加如下內容並保存退出:

""""""""""""""""""""""""""""""""""""""""""""""Vundle""""""""""""""""""""""""""""""""""
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle  "vundle插件下載到了~/.vim/bundle/Vundle下
call vundle#rc()

Bundle 'Valloric/YouCompleteMe' "YouCompleteMe托管在github上,使用vundle安裝

filetype plugin indent on
""""""""""""""""""""""""""""""""""""""""""""""Vundle End"""""""""""""""""""""""""""""""

然后在vim中輸入:BundleInstall。如果網速不給力的話,這個過程會比較漫長~,而且有可能安裝失敗。

2. 另一種方法直接安裝YouCompleteMe插件:

git clone https://github.com/Valloric/YouCompleteMe.git

等待下載完成后進入YouCompleteMe目錄檢查倉庫完整性:

git submodule update --init --recursive

......

等待下載完成后,執行下面命令查看cmake和clang的版本信息,我的cmak版本是3.3.2的而且沒有安裝clang,用cygwin自帶的setup.exe安裝一下,注意安裝clang時要把libclang也選上:

cygwin比較快速的鏡像比如:

http://mirrors.163.com/cygwin/

ftp://ftp.sjtu.edu.cn/sites/cygwin.com/pub/cygwin/

安裝完成后(注意不能在安裝中途退出,一定要等setup.exe提示安裝完成才可以,不然可能會出現"address space needed by XXX.dll is already occupied"之類的錯誤):

$ cmake --version
cmake version 3.6.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

$ clang --version
clang version 3.8.1 (tags/RELEASE_381/final)
Target: x86_64-unknown-windows-cygnus
Thread model: posix
InstalledDir: /usr/bin

在~/新建目錄ycm_build並進入,執行:

cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

 正確的結果如下:

接着執行:

cmake --build . --target ycm_core --config Release

發現錯誤如下:

原來是沒有安裝Boost C++ libraries,用setup.exe安裝好,重復執行上一個步驟,又發現錯誤:

查看/usr/include/python2.7/目錄,發現缺少了許多頭文件,用setup.exe安裝好python-dev,重復執行上一個步驟,得到了正確的結果。至此我們可以補全C-fimily還有官方文檔上說明的那些語言了。

接下來需要配置.vimrc,官方教程也有配置說明,這里我參考了其他博客:

http://blog.csdn.net/houzhuoming1/article/details/49990739

http://www.cnblogs.com/tsingke/p/5325964.html

在.vimrc中加入以下代碼:

""""""""""""""""""""""""""""""""""""""""""""""ycm"""""""""""""""""""""""""""""""
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra _conf.py'

set foldenable                                        "啟用折疊
set foldmethod=indent                                 "indent 折疊方式
set foldlevel=9999                                    " 折疊的層次,打開文件時默認不折疊

" 常規模式下用空格鍵來開關光標行所在折疊(注:zR 展開所有折疊,zM 關閉所有折疊)
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>

" 常規模式下輸入 cS 清除行尾空格
nmap cS :%s/\s\+$//g<CR>:noh<CR>

" 常規模式下輸入 cM 清除行尾 ^M 符號
nmap cM :%s/\r$//g<CR>:noh<CR>

" Ctrl + K 插入模式下光標向上移動
imap <c-k> <Up>

" Ctrl + J 插入模式下光標向下移動
imap <c-j> <Down>

" Ctrl + H 插入模式下光標向左移動
imap <c-h> <Left>

" Ctrl + L 插入模式下光標向右移動
imap <c-l> <Right>

" Ctrl + f 光標跳轉到行頭
imap <c-f> <ESC>0

set number                                            "顯示行號
set laststatus=2                                      "啟用狀態欄信息
set cmdheight=2                                       "設置命令行的高度為2,默認為1
set cursorline                                        "突出顯示當前行
" set guifont=YaHei_Consolas_Hybrid:h10                 "設置字體:字號(字體名稱空格用下划線代替)
" set nowrap                                            "設置不自動換行
set shortmess=atI                                     "去掉歡迎界面
""""""""""""""""""""""""""""""""""""""""""""""ycm End"""""""""""""""""""""""""""""""

但是打開文件后,會顯示:

處理 function youcompleteme#Enable[66]..50_OnBufferRead 時發生錯誤
第17行:
Traceback (most recent call last):

這是因為utf-8編碼才能被YouCompleteMe插件識別,因此需要在.vimrc中設置encoding;又因為是在windows環境下,還需要設置vim用於屏幕顯示的編碼termencoding為GBK,不然打開文件后底端的提示會有亂碼。

set encoding=utf-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
set termencoding=GBK

最后在vim中輸入:message不再顯示有錯誤。YouCompleteMe具體的用法我也剛剛接觸,而且為了打造一個足夠舒適的IDE肯定還要安裝其他的插件進行補充,網上對於這方面的資料也比較多了,以后慢慢去體會它的強大之處吧。

-----------------------------------------------------------------分隔線----------------------------------------------------------------------------

在另外一台機器上裝這個插件時,沒有打算補全C-family languages,所以直接執行~/.vim/bundle/YouCompleteMe下的install.py,出現了找不到合適的python庫的問題,因此可以手動重置~/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py中CustomPythonCmakeArgs函數中的python_library和python_include變量:

#python_library, python_include = FindPythonLibraries()
python_library = '/usr/lib/libpython2.7.dll.a' python_include = '/usr/include/python2.7'

然后運行安裝腳本install.py即可。

 

最后感謝我們產品四人小組給我的鼓勵和支持,讓我回想起了那時辛苦又溫暖的北漂生活~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM