Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 397, 文章 - 0, 评论 - 196, 引用 - 0
数据加载中……

debian下vim的c++自动补全功能的实现

一、安装ctags:从官网下载 Ctags 可执行文件,网站是 http://ctags.sourceforge.net/,安装命令是linux中常见的./configure;make;make install
二、准备索引:从网上下载专为 Ctags 修改过的 libstdc++ 头文件cpp_src.rar(这个文件下载后,扩展名改为tar.gz2),解压缩(tar -xjf);
      切换到解压缩后的路径,执行ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f cpp .,产生索引文件 cpp
三、下载 OmniCppComplete,修改vim的配置文件vimrc ,在文件末尾加入
    " ctags 索引文件 (根据已经生成的索引文件添加即可, 这里额外添加了 hge 和 curl 的索引文件)
set tags+=/ctags/tags/cpp-------这里是cpp文件绝对路径
set tags+=/ctags/tags/hge-------hge绝对路径(这个索引文件用户可以自己生成,也是用上面的命令)
set tags+=/ctags/tags/curl-------curl绝对路径
" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表
let OmniCpp_MayCompleteDot = 1   " 输入 .  后自动补全
let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全
let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" 自动关闭补全窗口
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest
OmniComplete解压缩后,将autoload和doc下的文件拷贝到vim的/usr/share/vim/vim72/atuoload路径下;将after文件夹拷贝到/usr/share/vim/vimfiles/下;
需确认在 vimrc 中开启了 filetype 选项,不然 OmniComplete 无法自动识别 C/C++ 文件类型进行补全。

这样,在插入模式编辑 C/C++ 源文件时按下 . 或 -> 或 ::,或者手动按下 Ctrl+X Ctrl+O 后就会弹出自动补全窗口,此时可以用 Ctrl+N 和 Ctrl+P 上下移动光标进行选择。

变自动补全窗口的配色可以在 vimrc 中加上:

highlight Pmenu    guibg=darkgrey  guifg=black
highlight PmenuSel guibg=lightgrey guifg=black

Pmenu 是所有项的配色,PmenuSel 是选中项的配色,guibgguifg 分别对应背景色和前景色。

注意:一定要注意拷贝文件的路径

 


posted on 2011-10-23 12:07 Benjamin 阅读(1120) 评论(0)  编辑 收藏 引用 所属分类: linux


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理