Sunday, April 1, 2012

还在使用omnicppcomplete? 试试更好用的clang_comlete吧!

我试着使用omnicppcomplete配合vi进行cpp编程。但感觉它的确不够好用。

1. 需要配合ctags,即使是使用的标准的库,如stl,也要到相应的目录生成tags文件,并且配置.vimrc,比较繁琐。如果使用了第三方的库,还要生成相应的库的tags文件,更改.vimrc的配置。
2. 为了生成stl的tags,不得不从网上下载经过修改的stl源代码。否则的话无法使用。
3. 不够智能。仅仅是tags而已。
4. 我最后也没有研究出来为什么string不能自动完成。

偶然的机会看到了clang_complete。试了以后,发现好用多了。

如何使用clang_complete:
1. clang_complete 依赖于 clang,所以事先需要安装clangsudo apt-get install clang

2. 下载最新的 clang_complete
http://www.vim.org/scripts/script.php?script_id=3302

3. 安装 clang_complete
vim clang_complete.vmb -c 'so %' -c 'q'

4.编辑 ~/.vimrc 这个文件,添加一行:
let g:clang_user_options='|| exit 0'

5. 好了,一切就绪了。找个地方,编辑一个cpp文件,试试效果吧。

6. 如果使用了第三方的库怎么办?
比如说,我使用了gtest和ace,就需要在项目的根目录里面添加一个文件: .clang_complete,内容类似如下的:
-I/home/zhan/dev/ace/include
-I/home/zhan/dev/gtest-1.6.0/include/
这样就能够针对gtest和ace自动完成了。

7. 如果配合使用superTab,就更好用了。默认情况下,需要按下CTRL+X CTRL+U才能显示当前正在输入的内容的自动完成提示。安装superTab之后,只需要按下tab键,就能出来相应的提示。

点击这里安装superTab:
http://www.vim.org/scripts/script.php?script_id=1643


8. 如果再安装下snipMate,就越来越像在使用Visual Studio了。