【ubuntu im 安装代码提示工具 youcompleteme】


学linux有一段时间了,在linux下进行开发,不免回想到windows下VS开发环境的便捷。当然,linux下优秀的工具数不胜数。下面就开发自己在linux下的IDE。

Youcompleteme是一款非常优秀的vim下代码提示工具,其安装过程如下:

参考:http://www.cnblogs.com/csuftzzk/p/3435710.html


前提:安装youcompleteme插件,vim必须7.3.584+。所以先进行vim升级。执行:

$ sudo add-apt-repository ppa:nmi/vim-snapshots
$ sudo apt-get update
$ sudo apt-get install vim
升级至7.4

相关介绍:

  1. PPA for vim 7.4. YouCompleteMe插件要求Vim 版本在7.3.584及以上,而Ubuntu13.04源中的Vim已经比较老了。所以,我们可以在源中添加PPA,或者编译源码手动更新VIM的版本。
  2. Vundle. 这是一个新生代vim插件管理器,使用git进行插件安装和更新。以前有一个pathogen。插件管理器的好处是:使用简单,自动化管理vim的插件。让你的.vim文件夹远离混乱不堪的窘境,从此一手.vimrc走天下。
  3. Clang+LLVM. LLVM+Clang是Apple公司资助的一个项目,YouCompleteMe精确的补全功能完全依赖于Clang的代码解析。我们需要安装好Clang 3.2+以便为YCM提供支持。
  4. SVN和Git。用于从代码库中检出源代码。在Ubuntu下这两个软件的安装都非常简单,使用apt-get命令即可安装完成。
  5. YouCompleteMeSyntastic.这两个插件都是配合使用的。YCM不用再说,Syntastic用于源码的实时检查。具体效果如同Eclipse一样,在代码编写的过程中即可实时报告语法错误。
  6. Cmake.后面在编译过程中会使用到,安装命令:sudo apt-get install cmake.

(1)首先介绍一下bundle这款vim下的插件管理器,本身也是一款插件。这是一个新生代vim插件管理器,使用git进行插件安装和更新。以前有一个pathogen。插件管理器的好处是:使用简单,自动化管理vim的插件。让你的.vim文件夹远离混乱不堪的窘境,从此一手.vimrc走天下。


下载:

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

配置.vimrc文件。如果没有则在家目录新建,加入:

""""""""""""""""""""""vundle manage vim plugins""""""""""""""""""""""""""""
set nocompatible              " be iMproved

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required! 
Bundle 'gmarik/vundle'

" My bundles here:
"
" original repos on GitHub / plugin from github
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
" vim-scripts repos / plugin from vim-script
Bundle 'L9'
Bundle 'FuzzyFinder'
" non-GitHub repos / pliugin from git repostory
Bundle 'git://git.wincent.com/command-t.git'
" Git repos on your local machine (i.e. when working on your own plugin)
" Bundle 'file:///Users/gmarik/path/to/plugin'
" ...

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..
注释文件:

set nocompatible               " be iMproved
 filetype off                   " required!

 set rtp+=~/.vim/bundle/vundle/
 call vundle#rc()

 " let Vundle manage Vundle
 " required! 
 Bundle 'gmarik/vundle'

 " My Bundles here:
 #以后你想安装什么插件可以写在下面
 "
 " original repos on github 
#如果你的插件来自github,写在下方,只要作者名/项目名就行了
 Bundle 'tpope/vim-fugitive' #如这里就安装了vim-fugitive这个插件
 Bundle 'Lokaltog/vim-easymotion'
 Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
 Bundle 'tpope/vim-rails.git'
 " vim-scripts repos
#如果插件来自 vim-scripts,你直接写插件名就行了
 Bundle 'L9'
 Bundle 'FuzzyFinder'
 " non github repos
#如使用自己的git库的插件,像下面这样做
 Bundle 'git://git.wincent.com/command-t.git'
 " git repos on your local machine (ie. when working on your own plugin)
 Bundle 'file:///Users/gmarik/path/to/plugin'
 " ...

 filetype plugin indent on     " required!
#下面是 vundle的一些命令代会会用到
 "
 " 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..
#这里可以写一些你自己的配置

完成配置后,打开vim窗口执行 BundleInstall,配置文件中关键子Buddle后的插件文件将自动下载至.vim文件中。删除插件时,秩序先删除.vim文件中相应插件的文件,后再vim中执行BundleClean即可。

(2)编译LLVM+Clang的源代码。在http://clang.llvm.org上面Clang 3.3并没有Ubuntu13.04 32bit的预编译的二进制程序,所以只好下载源码进行手工编译。命令如下:

//Checkout LLVM:
cd llvmsrc
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
//Checkout Clang:
cd llvmsrc
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
//Checkout Compiler-RT:
cd llvmsrc
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
//Get the Test Suite Source Code [Optional]
cd llvmsrc
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
//Configure and build LLVM and Clang:
cd llvmsrc
mkdir build (for building without polluting the source dir)
cd build
../llvm/configure --enable-optimized
make

以上步骤中唯一需要注意的是configure的时候,需要指定--enable-optimized参数。否则默认configure的将是Debug版本,问题多多。最后,我们使用make命令进行编译。编译过程比较长,耗时半个小时左右。这一步主要是为了下面编译YouCompleteMe插件做准备。


升级gcc之4.7。在编译的过程中可能会显示gcc版本过低,升级即可,执行:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update 
sudo apt-get install gcc-4.7 
sudo apt-get install g++-4.7  

cd /usr/bin
sudo rm g++
sudo ln -s g++-4.7 g++ # create link 


(3)编译youcompleteme.

1.下载源码。我们在前面使用vundle已经下载好了,因此这一步跳过。

2.执行命令:

$ cd ~ 
$ mkdir ~/ycm_build
$ cd ~/ycm_build
$ cmake -G "Unix Makefiles"  ~/.vim/bundle/YouCompleteMe/cpp -DEXTERNAL_LIBCLANG_PATH=~/ycm_temp/llvmsrc/lib/libclang.so 
$ make ycm_core
这里要注意的是-DEXTERNAL_LIBCLANG_PATH这个参数,用于指定libclang.so的位置。如果不指定的话,YCM将无法正常工作,总是报:The YCM shut down, crash report...之类的错误。而这个libclang.so就是我们在编译Clang的时候生成的。因此,相关路径(也即 ~/ycm_temp/llvmsrc/lib/libclang.so)需要替换成自己对应的路径。

3.关于make。在官方文档中只使用了:make ycm_support_libs.而我在实际操作中却屡屡失败。实际上,首先要执行:make ycm_core。这样将在~/.vim/bundle/YouCompleteMe/python/目录下自动生成两个文件(libclang.so和ycm_core.so),如下图:

4.这还是不够的,还必须执行命令:make ycm_support_libs。 这条命令才会生成第三个文件ycm_client_support.so。因为,YouCompleteMe是C/S架构的,所以存在服务器和服务端的说 法。另外,在/tmp/ycm_temp/目录下还可以看到服务和请求日志,更加可以验证这一点。

5.最后,为了能顺利的完成配置工作,我们还需要配置一下.ycm_extra_conf.py这个文件。项目说明中有个配置模板,我们需要做改动的就是flags部分。使用-isystem标志添加系统的头文件进行解析,而-I标志用于添加第三分的头文件进行解析。我的flags在最后增加如下:

  1. '-isystem',
    '/usr/include',
    '-isystem',
    '/usr/include/c++/',
    '-isystem',
    '/usr/include/i386-linux-gnu/c++'

    此外,为了更好的提高补全效率,我们可以保留原先使用的用Ctags生成的tags文件,并在~/.vimrc中添加:let g:ycm_collect_identifiers_from_tag_files = 1.其中,在vim中使用 :echo tagfiles()可以查看当前使用的tags文件。至于生成tags文件的方法,可以看Ctags的帮助文件或者上网搜索。

6.至此,配置尚未结束。.ycm_extra_conf.py文件可以是针对工程而言,也可以设置全局的。对工程而言,放在工程的根目录即可。不过每次打开文件都会询问是否加载,这时可以在~/.vimrc中设置:letg:ycm_confirm_extra_conf=0来关闭提示。如果是针对全局的,那么可以在~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py中设置。如果没有问题,应该可以看到YouCompleteMe强大的一面了,效果在下面。


感谢:http://www.cnblogs.com/csuftzzk/p/3435710.html




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值