学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)首先介绍一下bundle这款vim下的插件管理器,本身也是一款插件。这是一个新生代vim插件管理器,使用git进行插件安装和更新。以前有一个pathogen。插件管理器的好处是:使用简单,自动化管理vim的插件。让你的.vim文件夹远离混乱不堪的窘境,从此一手.vimrc走天下。
下载:
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
""""""""""""""""""""""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
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在最后增加如下:
'-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