原創文章,歡迎指正!轉載請注明~
從上周就開始想在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即可。
最后感謝我們產品四人小組給我的鼓勵和支持,讓我回想起了那時辛苦又溫暖的北漂生活~