Vim中利用OmniCppComplete实现C++代码自动补全

Vim下的代码自动补全 使用ctags和OmniCppComplete taglist + cscope + global 【概念】代码自动补全和代码跳转阅读,应该是作为程序员最常用的功能之一了,具体二者是指什么我就不解释了。微软的Visual Studio就是靠这两样必杀技牢牢占据着广大windows程序员的心(这里面要有强大的VS插件Visual Assistant X一份功劳)。。。但是Linux程序员其实更幸福,不花钱就能搞定这两大功能。从本质上说,这二者的实现都依赖于一样东西:tag。tag就是程序中的关键词,在C++中主要包括:变量、函数名、类名等。代码自动补全实际上是tag的匹配(例如,程序员输入cla时,由于存在 阅读详情

        概述:OmniCppComplete适用于vim7.0及以上,OmniCppComplete利用catags产生的数据库实现C/C++的代码自动补全功能。

一、OmniCppComplete 特点:

    -   Complete namespaces, classes, structs and union members. 
    -   Complete inherited members for classes and structs (single and multiple inheritance). 
    -   Complete attribute members eg: myObject->_child->_child etc... 
    -   Complete type returned by a function eg: myObject->get()->_child. 
    -   Complete the "this" pointer. 
    -   Complete a typedef. 
    -   Complete the current scope (global and class scope). 
    -   Complete an object after a cast (C and C++ cast). 

    -   Complete anonymous types (eg: struct {int a; int b;}g_Var; g_Var.???). It also works for a typedef

二、  安装步骤:
1、安装OmniCppComplete。可以到OmniCppComplete的官方下载:点击打开链接,有时可能除了翻墙没法打开。可以从这个地方下载:点击打开链接。具体参考安装目录doc/omnicppcomplete.txt。

2、新建一个保存ctags数据库的目录,例如在安装目录下新建一个tags目录。

3、创建stdc++ tags:下载解压modified libstdc++ headers 到 tags/cpp_src。官方下载链接:点击打开链接,或者:点击打开链接。stdc++ tags介绍:能够被ctags使用的被稍做了修改的libstdc++头文件,从stdc++头文件建立的ctags数据库被OmniCppComplete来实现STL、流以及其他标准C++内容的补全功能 。

4、建立stdc++的catags数据库:
4.1 转到tags目录
4.2 运行:

ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f cpp cpp_src

5、增加额外的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配置文件:

" 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
omnicppcomplete 到http://www.vim.org/scripts/script.php?script_id=2358下载cpp_src.tar.bz2,解压,进入目录,运行下面这条命令 ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f cpp 然后就会在这个目录下生成一个文件名为cpp的文件,这就是我们需要的 然后到http://www.vim.org/scripts/script.php?script_id=1520下载omnicppcomplete-0.41.zip 解压到~/.vim目录下(解压出3个文件夹after, autoload, doc) 然后用编辑器打开~/.vimrc,把下面内容粘进去(用文件名为cpp的文件的真实目录替换【目录】) " ctags 索引文件 (根据已经生成的索引文件添加即可, 这里我额外添加了 hge 和 curl 的索引文件) set tags+=【目录】/cpp 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 立即下载

相关推荐

OmniCppComplete

OmniCppComplete,Linux下对其vim编辑器中C/C++函数结构体,类等的自动补全

OmniCppComplete实现C代码自动补全

OmniCppComplete主要提供输入时实时提供类或结构体的属性或方法的提示和补全。跟Talist一样,OmniCppComplete也是一个Vim插件,同样依赖与Ctags工具生成的tags文件。安装步骤跟Taglist类似。 可以参考http://blog.chinaunix.net/uid-20737871-id-3402590.html 从http://www.vim.org/scripts/script.php?script_id=1520下载安装包后。 1)进入~/.vim目录,将安装版解压

biaotai的博客 1349

vim插件:omnicppcomplete-0.41.zip、taglist_46_vim.zip、vim-autocomplpop.zip三合一

vim常用插件: 1. omnicppcomplete-0.41.zip 2. taglist_46_vim.zip 3. vim-autocomplpop.zip

Vim中C/C++代码补全插件-omnicppcomplete

http://blog.xuyu.org/?p=1207. omnicppcomplete,Vim中C/C++代码补全插件,基于ctags所生成的标签库。官方网址:omnicppcomplete,当前最新版本:v0.41。 onmicppcompete功能: 命名空间(namespace),类(class),结构(struct)和联合(unio

gaoguoxin2的专栏 4626

Oracle ERP EBS R12 GL总帐业务方案 系统操作

本文档是Oracle ERP系统的总账管理模块使用手册,主要包含以下内容:1.系统架构设计,详细介绍多组织架构、会计科目设置等核心概念;2.总账日常操作流程,包括凭证录入、审核、过账等全流程管理;3.特殊业务处理,涵盖预算控制、内部往来、合并报表等专项功能;4.期末处理,说明月结、年结的操作步骤;5.系统设置指南,提供会计科目表、权限控制等配置说明;6.附录包含各业务模块的分录示例和系统操作图标说明。本手册适用于财务人员学习和使用Oracle ERP总账系统,重点讲解系统功能要点和实操步骤。

anpeng2019的博客 1888

AGV、RGV、四向车openTCS调度系统(三)车辆适配器解读,封装自己的适配器

AGV、RGV、四向车调度。理解适配器的整体作用,以及如何使用官方例子改造自己的适配器,

要这头发有何用 3612

vim 中OmniCppComplete的安装和使用

将vim 改造成功能强大的IDE系列之三 『插件介绍』 onmicppcompete功能: 命名空间(namespace),类(class),结构(struct)和联合(union)补全函数属性成员和返回值类型补全"this"指针成员补全C/C++类型转换(cast)对象补全类型定义(typedef)和匿名类型(anonymous types)补全 按理说可以显示函数原

2万+

Java对接海康威视明眸门禁设备

海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。的SDK复制到linux的lib目录下(如果是docker发布,记得做好共享映射哦)大家有没有想过,windows版的SDK为什么要复制到项目根目录的lib文件夹下?所以发布到linux的时候,我们需要将。打开AcsMain文件。................

Good Luck 7875

vim之AutoComplPop和OmniCppComplete的安装和使用

大多数IDE中,只要代码输入到相应的位置,补全提示就会自动的弹出来,而vim的这种 补全还需要自己手动的来触发。在coding过程中,有了变量或函数的自动弹出功能,可以极大的提高编码的效率和准确率,这里介绍的AutoComplPop和OmniCppComplete脚本插件就是实现这样一个功能。下载:http://www.vim.org/scripts/script.php?下载:http://www.vim.org/scripts/script.php?

m0_46249949的博客 594

weblogic等保测评操作过程

weblogic网络安全等级测评保护操作

qq_48257021的博客 2759

本地化搭建DeepSeek+RAGFlow,构建个人知识库

本地化搭建DeepSeek+RAGFlow,构建个人知识库。至少32G以上内存、500G以上空余磁盘空间。

gogospecter的专栏 7428

vim自动补齐插件onmicppcompete

转自http://blog.youkuaiyun.com/duguteng/article/details/7417181#t4 vim自动补齐插件onmicppcompete 『插件介绍』 onmicppcompete功能: 命名空间(namespace),类(class),结构(struct)和联合(union)补全 函数属性成员和返回值类型补全 "this"指针成员补全 C/C++...

weixin_30325971的博客 478

一阶电路基础知识

一阶电路(First-order circuit)是指由一个电感(L)或一个电容(C)和一个电阻(R)组成的电路。根据电感或电容的位置,一阶电路可以分为RC电路、RL电路、LC电路、RLC电路。一阶电路常用于滤波、放大、时序控制等各种电子设备和系统中。通过调整电阻、电容或电感的数值,可以改变电路的频率响应、滞后/提前相位等特性,实现不同的功能和性能一阶、二阶电路区别一阶电路由一个电容或一个电感与一个电阻组成,而二阶电路则由两个电容或两个电感与一个电阻组成。

weixin_45365488的博客 1万+

omnicppcomplete php,OmniCppComplete 的使用

安装也非常简单" 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码imap " 按下F2根据头文件内关键字补全imap " set completeopt=menu,menuone " 关掉智能补全时的预览窗口let OmniCpp_MayCompleteDot = 1 " autocomplete with .let OmniCpp_MayCo...

weixin_35772420的博客 165

Python在Genesis2000 CAM软件中的编程应用

Genesis2000是一款功能强大的计算机辅助制造(CAM)软件,它提供了广泛的功能和工具,用于帮助制造商进行CAD(计算机辅助设计)到CAM的转换。在Genesis2000中,我们可以利用Python的灵活性和功能来扩展软件的自定义能力,并通过编写脚本来自动化各种制造任务。例如,假设我们需要在Genesis2000中添加一个新的操作,用于自动计算零部件的重量。我们可以编写一个Python脚本,通过遍历模型的几何数据并应用相关的计算公式,来实现这个功能。

PixelEnigma的博客 2423

深度剖析XY2-100与SL2-100协议:解锁激光打标核心技术密码

XY2-100和SL2-100是激光打标领域的两种核心控制协议。XY2-100协议采用串行通信,指令集简单,适合常规打标任务,具有成本优势;SL2-100协议支持更高速率(1Mbps以上),具备曲线插补等高级指令,在精密加工领域表现突出。两者的主要差异体现在数据传输(帧结构、速率)、指令集(功能、数量)、参数调节(范围、精度)和错误处理机制等方面。实际应用中,XY2-100适合简单图形的大批量生产,SL2-100更胜任复杂曲面的高精度加工。选择时需综合考虑打标需求、设备兼容性和成本因素,未来两种协议将持续优

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 957

转:让vim支持c++代码自动补全功能

vim在默认情况下是没有这个功能的,我们需要下载一个插件和一个软件来实现这个功能。插件:<a onclick="function onclick(){pageTracker._trackPageview(/outbound/article/www.vim.org);}" href="http://www.vim.org/scripts/script.php?script_id=

xiaodong liang 2134

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

草稿-把vim变成IDE

从昨天下午到现在一直在研究vim,初学者,从vim最基本的命令开始看起的。是通过vimtutor学习的。 看到最后一章的时候,发现原来vimtutor中的知识知识vim中的冰山一角,vim真正的强大之处就是在于程序员可以随心所欲地配置它,使它易于自己使用。据说牛逼的人配置出来的比IDE还要方便使用。 之后再网上看配置vim的方法,有很多文章中提到用Autocomplpop、ctags、Omni...

weixin_30289831的博客 132

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

vim下的ctags和taglist等的使用和配置

1.ctags (1)到http://prdownloads.sourceforge.net/ctags/ctags-5.6.tar.gz 下载ctags源码ctags-5.6.tar.gz (2)解压并安装 假设在家目录下taogle用户的目录下:tar zxvf ctags-5.6.tar.gzcd ctags-5.6./configure && ma...

weixin_30279315的博客 82

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

代码补全

ctagsvim下方便代码阅读的工具 安装 到ctags官网下载源码,解压后 $ ./configure $ make $ sudo make install 如果你使用的是Ubuntu系统(Debian),那么可以使用如下命令直接安装:sudo apt-get install ctag 生成索引文件 在源码目录下执行 $ctags –R* ctags配置 使用sudo vi

u011990090的专栏 624

一步步将vim改造成C/C++开发环境(IDE)

转载请注明出处lingdxuyan.blog.chinaunix.net  一步步将vim改造成C/C++开发环境(IDE) 原文地址http://blog168.chinaunix.net/space.php?uid=23089249&do=blog&id=2855999 【参考资料】 吴垠的“手把手教你把Vim改装成一个IDE编程环境” 在Fedora下成功将Vim打

xdgs_2005的专栏 369

vim as a IDE

构造 c++ IDE(linux) 作者:blueoceanli  来源:博客园  发布时间:2009-04-27 11:58  阅读:172 次  原文链接   [收藏]   (修改~/.vimrc,没有创建之)set encoding=utf-8syntax enablesyntax onfiletyp

kayv啊kayv 690

CentOS7 vim 自动补全 omnicppcomplete

安装步骤: 1.安装ctag; 使用yum install ctag; 2.安装omnicppcomplete; 将解压的文件autoload中的omni拷贝到/usr/share/vim/vim74/autoload; 将解压的文件after/ftplugin中的文件拷贝到/usr/share/vim/vim74/ftplugin; 3.使用ctags生成标签库; 下载专为 Cta

u010073048的博客 1210

Linux中 vim 实现代码补全

Linux中 vim 实现代码补全vim 中代码补全步骤1:判断步骤2:安装 `OmniCppComplete`步骤3:步骤4:些许其他操作结果利用 Tab 键进行补全 vim 中代码补全 此部分内容主要是介绍如何实现在vim中进行代码补全,其可分为以下几个步骤: 步骤1:判断 判断当前系统中是否具有补全功能,即随便创建一个文件,比如 test.c, 在其命令行模式中输入 :set omnifunc? 若结果呈现 omnifunc=ccomplete#Complete 即 则说明此时可利用 Ctrl+

m0_51961114的博客 1万+
上一篇: 全排列---递归实现与分析(C语言)
下一篇: 再看C语言输入
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值