在上一节(http://www.jb51.cc/article/p-vjtzfhwe-bqm.html)我们已经通过 Vundle 下载、安装了一些插件,这些插件有一些可以直接用、有一些需要配置、有一些则需要编译,下面我们一一来看一下常用的一些插件应该怎样用起来吧。@H_301_1@
首先要讲的是 YouCompleteMe,它应该是最难安装的一个插件了。vundle 已经帮我们做了一部分工作,但还不能使它正常工作起来,对于 C/C++ 用户来说,我们还需要编译 ycm_core.so 和 libclang.so。编译方法如下:@H_301_1@
$ cd ~/.vim/bundle/YouCompleteMe
$ ./install.sh --clang-completer
WARNING: this script is deprecated. Use the install.py script instead.
ERROR: please install CMake and retry.
$ ./install.py --clang-completer
ERROR: please install CMake and retry.
YouCompleteMe 目录下有两个安装脚本,install.sh 和 install.py,显然根据执行情况来看,install.sh 已经失效了,最后执行的是 install.py。但是,需要 CMake 的支持!
于是我们 apt-get 一下吧:@H_301_1@
$ sudo apt-get install cmake
很可惜,对于 Ubuntu 12.04 的用户来说,这种方法并不行。因为 install.py 要求的 CMake 需要 2.8.11 以上版本。所以我们还是手动安装一下吧:@H_301_1@
$ wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1-Linux-i386.tar.gz
$ tar zxvf cmake-2.8.12.1-Linux-i386.tar.gz
$ cd cmake-2.8.12.1-Linux-i386
$ sudo cp bin/* /usr/bin/ $ sudo cp -r share/cmake-2.8 /usr/share/
好了,现在可以继续执行 ./install.py --clang-completer
,可惜还不成功,提示如下: @H_301_1@
$ ./install.py --clang-completer
Searching Python 2.7 libraries...
Found Python library: /usr/lib/python2.7/config/libpython2.7.so
Found Python headers folder: /usr/include/python2.7
-- The C compiler identification is GNU 4.6.3 -- The CXX compiler identification is GNU 4.6.3 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done CMake Error at CMakeLists.txt:217 (message):
Your C++ compiler does NOT fully support C++11.
......
显然,这次是由于 C++ 编译器不完全支持 C++ 11 造成的,因为 g++ 4.8 以上版本才完全支持 C++11 啊!而 Ubuntu 12.04 中用 apt-get 安装的是 4.6 版本的,所以还是手动升级一下 gcc 和 g++ 吧。具体方法参考:http://www.linuxidc.com/Linux/2014-03/97445.htm。
哎呀!我真是命苦,还以为万事大吉了,结果还是出错了:@H_301_1@
......
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
经检查发现是因为我的虚拟机内存不足呀,编译 Linux 都没问题,没想到编译这个会出问题。。。好吧,面对这个情况,我们可以加大虚拟机的内存分配,或者临时使用交换分区来解决!
再次执行 ./install.py --clang-completer
,这次终于顺利编译通过了!忘了截图。。。不过没关系,我们在 third_party/ycmd/ 目录看到 libclang.so 和 ycm_core.so 就可以了。@H_301_1@
$ cd ~/.vim/bundle/YouCompleteMe/third_party/ycmd/
$ ls *.so*
libclang.so.4 libclang.so.4.0 ycm_core.so
还差一步,运行 vim 的时候我们发现缺少 .ycm_extra_conf.py 文件。那就拷贝一份吧:@H_301_1@
$ cd ~/.vim/bundle/YouCompleteMe/
$ cp ./third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
然后在 ~/.vimrc 中添加如下配置:@H_301_1@
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
好了,打开 vim 试一下呗!@H_301_1@
搞定 YouCompleteMe 就完成了一大步了,其他插件的用法都比较简单,我在这里就大概列一下插件及其作用吧。(注意:有些插件存在包含与被包含的关系,有些插件功能相似,因此选择其中的一些使用即可。)
@H_301_1@
- YouCompleteMe —— 代码补全
- Syntastic —— 语法检查
- SuperTab —— 使 Tab 快捷键具有更快捷的上下文提示功能
- Ctags —— 实现变量名、函数名的跳转(需遍历源代码文件生成 tags 文件)
- Cscope —— 升级版 Ctags
- TagList —— 显示当前文件中的宏、全局变量、函数等 tag(类似于 SourceInsight 的功能)
- Tagbar —— TagList 的替代品(更适合于 C++)
- AutoPairs —— 自动插入和格式化括号
- Powerline —— 状态栏
- Vim-airline —— Powerline 的替代品
- Echofunc —— 自动显示函数声明
- Snipmate —— 自动插入代码(代码重用工具)
- NERDTree —— 文件浏览器(树形目录)
- Ctrlp —— 文件浏览器(重新定义打开目录和文件的方式,更适用于大规模项目文件的浏览)
- MiniBufferExplorer —— 缓冲区文件管理器
- NERDCommenter —— 快速注释
- Undotree —— 支持 undo 和 redo
- Gdbmgr —— 调试器