ubuntu16.04 安装OmniCppCompletion

首先OmniCppCompletion是vim的一个代码补全的工具,官网(点击打开链接)。

1.先安装ctags(ctags的安装教程点击打开链接)

2.然后参考官网

解析:从官网下载压缩文件之后,在主目录下新建一个 .vim文件也就是 ~/.vim(因为是linux系统,所以新建一个.vim文件),然后打开vim,在vim命令行输入

:helptags $HOME/.vim/doc

这个命令的功能是给vim添加 OmniCppCompletion帮助文档,在执行了上述步骤之后,如果在vim normal模式下键入

:h omnicppcomplete

就能显示出OmniCppCompletion的帮助文档,如下图所示

(这个帮助文档很有用,值得花一个或者半个小时好好看,对提高编程效率有很大用处)

现在完成了omnicppcompletion的安装了,接下来要配置它了,这个主要是参考vim tip wiki点击打开链接。(这个链接很好)

首先是安装要求

1.这里说的doc文件夹是在前面安装omnicppcompletion时新建的~/.vim/下面的。至于这个.txt文件也就是前面的那个说明文档。

2.这里在~/.vim/ 新建个tags文件夹是为了存放常用的tags的

3.下载stdc++头文件是为了生成针对c++的tags。

4.进到新建的tags文件夹,并用上述命令生成一个stdc++对应的tags文件,这个文件的名字叫做cpp。

cd ~/.vim/tags
$ ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f cpp cpp_src

5.可以通过这个种方式生成各种库的tags文件,并把这些生成的tags放到 /tags这个目录下,比如你安装了opengl,sdl ,QT就可以通过如下方式生成相应的tags文件,并放到~/.vim/tags/ 中。

$ ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f gl /usr/include/GL/   # for OpenGL
$ ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f sdl /usr/include/SDL/ # for SDL
$ ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f qt4 /usr/include/qt4/ # for QT4

6.这个是官网建议在 ~/.vimrc(如果没有这个文件,就可以自己新建一个)文件中的关于omnicppcompletion的设置

" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
set tags+=~/.vim/tags/gl
set tags+=~/.vim/tags/sdl
set tags+=~/.vim/tags/qt4
" build tags of your own project with Ctrl-F12
map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
let OmniCpp_MayCompleteDot = 1 " autocomplete after .
let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview

其中

" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
set tags+=~/.vim/tags/gl
set tags+=~/.vim/tags/sdl
set tags+=~/.vim/tags/qt4
这几条语句,把cpp,opengl,sdl,qt4的对应的tags命令也加到omnicppcompletion补全的搜索范围里了(如果有需要到这几个库的话,如果不需要则不要把这几个库加进来)。

下面是我自己的在~/.vimrc的设置

" configure tags - add additional tags here or comment out not-used ones
  7 "set nocp
  8 
  9 set tags+=~/.vim/tags/cpp
 10 set tags+=./tags
 11 set tags+=~/.vim/tags/opencv
 12 set tags+=~/.vim/tags/opencv2
 13 "set tags+=~/.vim/tags/qt4
 14 " build tags of your own project with Ctrl-F12
 15 map <C-F12> :!ctags -R --sort=yes --c++-kinds=+pl --fields=+iaS --extra=+q .<CR>
 16 
 17 " OmniCppComplete
 18 let OmniCpp_NamespaceSearch = 1
 19 let OmniCpp_GlobalScopeSearch = 1
 20 let OmniCpp_ShowAccess = 1
 21 let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
 22 let OmniCpp_MayCompleteDot = 1 " autocomplete after .
 23 let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
 24 let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
 25 let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
 26 " automatically open and close the popup menu / preview window
 27 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
 28 set completeopt=menuone,menu,longest,preview
 29 au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main

这里要补充的一点就是map指令要改成如下形式

map <C-F12> :!ctags -R --sort=yes --c++-kinds=+pl --fields=+iaS --extra=+q .<CR>

和官网上的比较是在 --c++-kinds=+pl,多了个“l”因为是这个vim指令<ctrl+F12>执行的是ctags生成tags标签的功能,由于补全工具是靠tags标签文件来进行补全,所以当我们在我们的project下面进行操作的时候,需要使用 ctr+] 跳转到自己定义的变量或者函数的定义的地方,所以要生成现成project的tags,这时就要在vim界面的时候按<ctrl+F12>,然后跳转到定义处的功能才生效。

这里还多添加了一条指令

set tags+=./tags

这条指令的意义就算把前面介绍的当前公程的tags也加进搜索的范围。

下面这句的意思还不太懂得具体的含义,不过如果没有这句话的话,就有可能不实现补全

au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main


5.ok,这里轮到设置.vimrc文件,如果在~目录下面没有这个文件就新建一个就行了,并把上面的的东西放进去。保存退出。

6.这里

set tags+=~/.vim/tags/cpp

这条命令的功能是将cpp这个tags标签文件添加到搜索的范围里,所以后面如果想要添加其他c++库进来,只要将其对应的tags的按上述设置就可以了。比如我已经生成了opencv的tags叫opencv,那我就可以这样把库添加进来

set tags+=~/.vim/tags/opencv

这样我写代码的时候就能补全opencv的函数和类了,效果如下(补充一下,opencv的安装库是在/usr/local/include 这个目录下面,如果要生成相应的tags文件也要用到这个路经)


上面的红色框是对这个opencv函数的说明。下面的红色框就是补全框。

7.使用自动补全,可以用ctrl+x+ctrl+o(也就是连续按两个快捷键,e....,在这里我卡了很久,因为第一次碰到要使用2个快捷键菜才能激活的功能,醉了),这样写代码的时候就能自动补全了


8.有啥不懂可以在vim里normal模式输入

:h omnicppcompletion

来查看帮助文档, :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值