分享

VIM之omnicppcomplete

 深入敌后_ 2013-03-26

VIM之omnicppcomplete  

2010-11-17 20:55:12|  分类: VIM学习 |字号 订阅

unzip omnicppcomplete-0.41.zip -d ~/.vim
如果你到/usr/share/vim/vim70下面解压是不行的 我弄了两天才搞明白 哎~~~

vim在默认情况下是没有这个功能的,我们需要下载一个插件和一个软件来实现这个功能。
 
插件:omnicppcomplete  下载链接:http://download.csdn.net/source/2310557
 
软件:ctags
 
ctags一般系统默认就有。
 
下载并安装插件 omnicppcomplete:
 
 
解压:unzip omincppcomplete.zip -d ~/.vim
 
omnicppcomplete至此安装成功。
 
运行vim,然后在vim的命令模式下输入 :helptags $HOME/.vim/doc ,这样可以添加omnicppcomplete的帮助文件到vim。
 
你可以继续输入:h omnicppcomplete来查看插件提供的文档,里边有安装和使用的所用方法。
 
在你的vim配置文件(~/.vimrc或者/etc/vimrc,没有可以新添加一个)加上以下几句:
set nocp
filetype plugin on
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
set completeopt=menu
set cindent

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
else
return a:char
endif
endf
 
 
使用方法:
 
omnicppcomplete主要依赖ctags生成的tags文件来判断补全的,所以首先应该生成一定的信息。也就是说应该先把类写好,然后再生成tags,以后出现对象的 ”.” 或 ”->”成员操作时它自动寻找成员函数。
 
工程目录 下用vim编辑文件时按Ctrl+F12 ,ctags会把这个文件所在目录以及子目录的所有文件信息收集生成一个名为tags的文件存在当前编辑文件所在目录。然后就可以实现代码自动补全。 在~/.vimrc中添加的 map…… 那句宏就实现这个功能。/*强烈建议不要使用这个:注意,如果要让新编写的文件可以使用则需先写入,命令为 :w */

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多