天天看點

VIM自動補全插件 - YouCompleteMe--"大神級vim補全插件"

VIM自動補全插件 - YouCompleteMe

序言

    vim 之是以被稱為編輯器之神多半歸功于其豐富的可DIY的靈活插件功能,( 例如vim下的這款神級般的代碼補全插件YouCompleteMe), 使用VIM的使用者也多半感覺 IDE開發工具不夠輕便,且IDE往往隻支援特定的幾種語言或者特定系統平台,多數人用來用去,還是覺得VIM最順手,用起來最舒心.

  下面這個VIM的自動補全插件——YouCompleteMe,為我們彌補了vim不能自動補全的缺憾。YCM不僅僅對C族語言的支援非常好,而且它是一個很強大的VIM自動補全架構,可以和Eclim、Jedi配合,對Java、Python等語言提供非常好的支援。

 YouCompleteMe 完整的安裝步驟如下:

  1. 更新VIM到7.3.584+,并且支援python内嵌腳本。584是更新檔的編号,一般我們裝的VIM都是不帶更新檔的。可以選擇打更新檔,不過這樣比較麻煩,我選擇了直接安裝VIM 7.4(下載下傳目前的 vim-7.4a )。
    $ ./configure --with-features=huge --enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-cscope --enable-multibyte --disable-gui --prefix=/usr
    $ make VIMRUNTIMEDIR=/usr/share/vim/vim74a
    # make install      
  2. 通過 Vundle 安裝YCM。官方比較推薦使用Vundle做插件管理,不過我之前一直未使用。

    首先安裝Vundle:

    $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
          
    配置 ~/.vimrc:
    set nocompatible               " be iMproved
    filetype off                   " required!
    
    set rtp+=~/.vim/bundle/vundle/
    call vundle#rc()
    
    " let Vundle manage Vundle
    " required!
    Bundle 'gmarik/vundle'  (本句後面不要添加注釋,否則會報錯哦~奇葩~)
    
    Bundle 'Valloric/YouCompleteMe'   (本句後面也不要添加任何注釋,否則也會報錯~)
    
    filetype plugin indent on     " required!
    "
    " Brief help
    " :BundleList          - list configured bundles
    " :BundleInstall(!)    - install(update) bundles
    " :BundleSearch(!) foo - search(or refresh cache first) for foo
    " :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
    "
    " see :h vundle for more details or wiki for FAQ
    " NOTE: comments after Bundle command are not allowed..
          
    安裝YCM:
    $ vim +BundleInstall +qall      
  3. 更新libclang到3.2以上版本,可以通過Xcode來更新。

    對于Debian系統,可以添加LLVM源,從源裡安裝。

    # LLVM source
    deb http://llvm.org/apt/wheezy/ llvm-toolchain-wheezy main
    deb-src http://llvm.org/apt/wheezy/ llvm-toolchain-wheezy main      
  4. 編譯ycm_core。先去安裝一個 cmake 工具。

    編譯:

    $ cd ~/.vim/bundle/YouCompleteMe
    $ ./install.sh --clang-completer --system-libclang (直接用也是可以的~)
          

    注意

    如果不使用 --system-libclang 參數,則ycm會自己下載下傳Ubuntu x64的clang+llvm-3.3的二進制包,這在一些平台會有相容問題。

    編譯過程也可以不使用install.sh腳本。則使用如下指令:

    $ mkdir ycm_build
    $ cd ycm_build
    $ cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=/path/to/libclang.so . ~/.vim/bundle/YouCompleteMe/cpp
    $ make ycm_core
    $ make ycm_support_libs      
  5. 安裝Eclim來處理java。下載下傳 Eclim 2.2.6 ,安裝Eclim 2.2.x要求Eclipse 4.2.x。在Mac下直接輕按兩下在圖形界面安裝即可。
  6. 在.vimrc中增加一些配置。
    let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'
    let g:EclimCompletionMethod = 'omnifunc'
          
    修改.ycm_extra_conf.py檔案,注釋掉下面代碼,開啟對C++标準庫的支援。
    #try:
    #  final_flags.remove( '-stdlib=libc++' )
    #except ValueError:
    #  pass      

使用YCM (針對java使用者配置)

對于類C語言和Python,YCM可以直接使用,對于Java,需要先啟動Eclim。

下面主要說說用Eclim+YCM開發Java工程的方式。

  1. 首先啟動Eclim服務,執行/Users/yeolar/.eclipse/org.eclipse.platform_4.2.0_119745494/eclimd 。

    為了友善,可以在~/.bash_profile中添加别名:

    alias eclimd='/Users/yeolar/.eclipse/org.eclipse.platform_4.2.0_119745494/eclimd 2>&1 1>/dev/null &'
          
  2. 可以驗證一下Eclim的安裝:
    :PingEclim       " 服務是否正常
    :EclimValidate   " 驗證vim配置有效
          
  3. 建立Java工程:
    :ProjectCreate /path/to/project -n java
          

    建立工程會自動建立.classpath、.project檔案和src目錄。可以使用 :ProjectList 檢視工程清單。

    添加工程的源代碼路徑可以在.classpath檔案中使用 :NewSrcEntry path/to/new/src 完成。預設在工程建立時已經添加了src目錄。

  4. 編寫代碼。正常編寫即可,因為已經在YCM中添加了Eclim的相關配置,是以自動完成功能已經和YCM的一緻。更多用法可以參考 http://eclim.org/vim/java/index.html 。