关闭

vim 中OmniCppComplete的安装和使用

252人阅读 评论(0) 收藏 举报
分类:

将vim 改造成功能强大的IDE系列之三

『插件介绍』

onmicppcompete功能:

  • 命名空间(namespace),类(class),结构(struct)和联合(union)补全
  • 函数属性成员和返回值类型补全
  • "this"指针成员补全
  • C/C++类型转换(cast)对象补全
  • 类型定义(typedef)和匿名类型(anonymous types)补全

按理说可以显示函数原型,但是我的不可以,不知道为什么?

有图有真相:



『下载和安装』

http://www.vim.org/scripts/script.php?script_id=1520下载安装包后。

       1)进入~/.vim目录,将安装版解压缩

       2)进入~/.vim/doc目录,在Vim命令行下运行"helptags .”

       3)在~/.vimrc中加入以下几行:

[html] view plain copy
 print?
  1. set nocp    
  2. filetype plugin on   

      4)启动Vim后使用以下命令为Vim添加omnicppcomplete帮助信息

[html] view plain copy
 print?
  1. :helptags ~/.vimrc/doc   
     5)使用ctags生成标签库
对于C++代码,需要在~/.ctags 中加入下面几个选项(去除中文):

[html] view plain copy
 print?
  1. --c++-kinds=+p : 为标签添加函数原型(prototype)信息  
  2. --fields=+iaS : 为标签添加继承信息(inheritance),访问控制(access)信息,函数特征(function Signature,如参数表或原型等)  
  3. --extra=+q : 为类成员标签添加类标识  

至此,安装结束!

『基本功能使用方法』

在配置好Vim,并生成了ctags标签库前提条件下,Vim中在输入 “xxx." 或者 "xxx->" 时会弹出如下补全提示:

[html] view plain copy
 print?
  1. +-------------------------------------+    
  2. |method1(   f  +  MyNamespace::MyClass|    
  3. |_member1   m  +  MyNamespace::MyClass|    
  4. |_member2   m  #  MyNamespace::MyClass|    
  5. |_member3   m  -  MyNamespace::MyClass|    
  6. +-------------------------------------+    
  7.     ^       ^  ^          ^    
  8.    (1)     (2)(3)        (4)    

其中1为符号名称;2为符号类型;3为访问控制标识;4为符号定义所在域(scope)。

 符号名称

1为omnicppcomplete所查找到的可选符号(symbol)名称,如以'('结尾,则为函数。

按理说可以显示函数的原型,但是我的不可以,不知道为什么?

 符号类型

符号的类型,可能的值为

  • c : 类(class)
  • d : 宏(macro definition)
  • e : 枚举值(enumeator)
  • : 函数(function)
  • g : 枚举类型名称
  • m : 类/结构/联合成员(member)
  • : 命名空间(namespace)
  • p : 函数原型(function prototype)
  • s : 结构体名称(structure name)
  • t : 类型定义(typedef)
  • u : 联合名(union name)
  • v : 变量定义(variable defination)

访问控制

类成员访问控制,取值:

  • + : 公共(public)
  • # : 保护(protected)
  • : 私有(private)

符号定义所在域

符号在何处被定义。

『常用配置选项』

Vim中,可以通过以下选项控制omnicppcomplete查找/补全方式:

  • OmniCpp_GlobalScopeSearch : 全局查找控制。0:禁止;1:允许(缺省)
  • OmniCpp_NamespaceSearch : 命名空间查找控制。
    • 0 : 禁止查找命名空间
    • 1 : 查找当前文件缓冲区内的命名空间(缺省)
    • 2 : 查找当前文件缓冲区和包含文件中的命名空间
  • OmniCpp_DisplayMode : 类成员显示控制(是否显示全部公有(public)私有(private)保护(protected)成员)。
    • 0 : 自动
    • 1 : 显示所有成员
  • OmniCpp_ShowScopeInAbbr : 选项用来控制匹配项所在域的显示位置。缺省情况下,omni显示的补全提示菜单中总是将匹配项所在域信息显示在缩略信息最后一列。
    • 0 : 信息缩略中不显示匹配项所在域(缺省)
    • 1 : 显示匹配项所在域,并移除缩略信息中最后一列
  • OmniCpp_ShowPrototypeInAbbr : 是否是补全提示缩略信息中显示函数原型。
    • 0 : 不显示(缺省)
    • 1 : 显示原型
  • OmniCpp_ShowAccess : 是否显示访问控制信息('+', '-', '#')。0/1, 缺省为1(显示)
  • OmniCpp_DefaultNamespaces : 默认命名空间列表,项目间使用','隔开。
    如:let OmniCpp_DefaultNamespaces = ["std', "MyNamespace"]
  • OmniCpp_MayCompleteDot : 在'.'号后是否自动运行omnicppcomplete给出提示信息。0/1, 缺省为1
  • OmniCpp_MayCompleteArray : 在"->"后是否自动运行omnicppcomplete给出提示信息。0/1, 缺省为1
  • OmniCpp_MayCompleteScope : 在域标识符"::"后是否自动运行omnicppcomplete给出提示信息。0/1, 缺省为0
  • OmniCpp_SelectFirstItem : 是否自动选择第一个匹配项。仅当"completeopt"不为"longest"时有效。
    • 0 : 不选择第一项(缺省)
    • 1 : 选择第一项并插入到光标位置
    • 2 : 选择第一项但不插入光标位置
  • OmniCpp_LocalSearchDecl : 使用Vim标准查找函数/本地(local)查找函数。Vim内部用来在函数中查找变量定义的函数需要函数括号位于文本的第一列,而本地查找函数并不需要。

『阅读说明』

    1)Vim存在多个配置文件vimrc,比如/etc/vimrc,此文件影响整个系统的Vim。还有~/.vimrc,此文件只影响本用户的Vim。而且~/.vimrc文件中的配置会覆盖/etc/vimrc中的配置。这里我们只修改~/.vimrc文件。

    2)Vim的插件(plugin)安装在Vim的runtimepath目录下,你可以在Vim命令行下运行"set rtp“命令查看。这里我们选择安装在~/.vim目录,没有就创建一个。

    3)当本文说”在Vim命令行下运行cmdxx命令“时,意思是指在Vim的命令行模式下运行cmdxx命令,即在Vim的正常模式下通过输入冒号":"进入命令行模式,然后紧接着输入命令cmdxx。在后文描述中都会省略冒号":"输入。

    4)如果没有说明“在Vim命令行下运行某命令”,则是在shell中执行该命令。

    5)如果命令中间被空白符间隔或有与正文容易混淆的字符,我会用双引号将命令与正文区分。所以读者在实际操作时,不要输入命令最前面和最后面引号。

    6)本文关于组合快捷键的描述,形如a-b形式的快捷键表示同时按下a键和b键,而形如"a-b c"形式的快捷键,则表示先同时按下a键和b键,然后放开ab键,再按下c键。

    7) 本人使用的系统是Ubunt 11.10 ,Vim版本是Vi IMproved 7.3

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

vim 中OmniCppComplete的安装和使用

『插件介绍』 onmicppcompete功能: 命名空间(namespace),类(class),结构(struct)和联合(union)补全函数属性成员和返回值类型补全"this"指针成员补全C/C++类型转换(cast)对象补全类型定义(type...
  • yanxuex
  • yanxuex
  • 2013-12-17 21:19
  • 400

使用Vim 插件管理程序Vundle的vim配置

if(has("win32") || has("win95") || has("win64") || has("win16"))     let g:isWin=1 else    ...
  • jfcat
  • jfcat
  • 2013-03-12 13:49
  • 5641

Ubuntu下使用AutoComlPop和OmniCppComplete实现变量补全和代码补全

一 使用AutoComlPop实现变量补全 1 下载AutoComlPop: 下载地址:http://www.vim.org/scripts/script.php?script_id=1879 2 安装 查看根目录$ cd ~ //进入根目录 $ ll //列出根目录下所有文...
  • yuhangfeng
  • yuhangfeng
  • 2017-03-02 21:36
  • 186

vim+cscope+ctags打造属于自己的IDE

所谓工欲善其事,必先利其器。作为专业码农,特别是长期在Unix系统上展开工作(查看源代码、coding)的码农,没有一个极致的IDE环境,工作效率会很受影响的。当然啥时候Unix系统如果有Visual Studio这样牛X的IDE,相信很多人会很开心。但生活是残酷的,我们总得自己丰衣足食,下面介绍一...
  • qq_26671365
  • qq_26671365
  • 2017-12-22 12:00
  • 90

vim 中OmniCppComplete的安装和使用

http://blog.csdn.net/duguteng/article/details/7417181 将vim 改造成功能强大的IDE系列之三 『插件介绍』 onmicppcompete功能: 命名空间(namespace),类(class),结构(struct)和联合(union)补...
  • k7arm
  • k7arm
  • 2015-05-22 17:39
  • 440

vim插件之AutoComplPop和OmniCppComplete的安装和使用

在coding过程中,有了变量或函数的自动弹出功能,可以极大的提高编码的效率和准确率,这里介绍的AutoComplPop和OmniCppComplete脚本插件就是实现这样一个功能。 1. 代码(普通变量函数)的自动弹出 AutoComplPop 下载:http:/...
  • yyyyyyyyyywwwwwwwwww
  • yyyyyyyyyywwwwwwwwww
  • 2015-09-25 16:10
  • 133

vim插件管理器:Vundle的介绍及安装(很全)

背景Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim下的几个文件夹中,插件的安装与更新与删除都需要自己手动来,既麻烦费事,又可能出现错误。Vundle简介Vundle 是 Vim bundle 的简称,是一个 Vim 插件管理器. Vundle 允许你做… 在.vimrc中跟踪和管理...
  • zhangpower1993
  • zhangpower1993
  • 2016-08-11 17:12
  • 20414

Vim编辑器的安装与使用

Vim编辑器的安装与使用 下面给大家讲解一下vim编辑器的安装及基本使用方法:   1、安装vim编辑器    如果没有安装vim编辑器的使用: sudo apt-get install vim    提示:[y/n]? ...
  • qintaiwu
  • qintaiwu
  • 2017-06-16 22:39
  • 498

vim 中Ctags的安装和使用

 这两天看到网上有将vim 改造成功能强大的IDE的blog,突然心血来潮,亲身经历了一下。 网友的帖子都不错,我这里只是将各种插件分开罗列,然后加上一些使用技巧。 希望本文对你有所帮助! 『插件介绍』 Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编...
  • swartz_lubel
  • swartz_lubel
  • 2017-02-23 19:49
  • 367

【Vim】使用Vundle管理配置Vim基本插件

Vundle项目托管在github上https://github.com/gmarik/vundle。 其特色在于使用git来管理插件,更新方便,支持搜索,一键更新,从此只需要一个vimrc走天下。在vimrc文件中添加如下内容来启用vundle管理vim插件的功能:set rtp+=$VIM/v...
  • JasonDing1354
  • JasonDing1354
  • 2015-04-29 16:44
  • 11471
    个人资料
    • 访问:22472次
    • 积分:331
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:30篇
    • 译文:0篇
    • 评论:1条
    文章分类