代码补全

ctagsvim下方便代码阅读的工具

安装

ctags官网下载源码,解压后

$ ./configure

$ make

$ sudo make install

如果你使用的是Ubuntu系统(Debian),那么可以使用如下命令直接安装:sudo apt-get install ctag

生成索引文件

在源码目录下执行

$ctags –R*

ctags配置

使用sudo vim /etc/vim/vimrc 编辑vim的配置文档,在其中加入如下命令:

set tags=/home/zhouyl/linux-3.4.7/tags;"后面的路径是使用ctags -R 后生成的tags文件所在目录,如果需要配置多个tags,只需如下再添加即可

set tags=/home/zhouyl/rap/libpcap-1.3.0/tags;

set autochdir

使用

熟练的使用ctags仅需记住下面七条命令:(很简单吧,呵呵)

1$ctags –R * ($Linux系统Shell提示符,这个命令上面已经有所介绍)

2. $ vi –t tag (请把tag替换为您欲查找的变量或函数名)

3:ts(ts助记字:tagslist, “:”开头的命令为VI中命令行模式命令)

4:tp(tp助记字:tagspreview)---此命令不常用,可以不用记

5:tn(tn助记字:tagsnext) ---此命令不常用,可以不用记

6Ctrl+ ]跳到光标所在函数或者结构体的定义处

7Ctrl+ T返回查找或跳转

“$vi –t tag” :在运行vim的时候加上“-t”参数,例如:[/usr/src]$vim -tmain这个命令将打开定义“main”(变量或函数或其它)的文件,并把光标定位到这一行。如果这个变量或函数有多处定义,

VI命令行模式 ts”命令就能列出一个列表供用户选择。

tp”为上一个tag标记文件,

tn”为下一个tag标记文件。

当然,若当前tags文件中用户所查找的变量或函数名只有一个,“:tp,:tn”命令不可用。

(最方便的方法是把光标移到变量名或函数名上,然后按下“Ctrl+]”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行。用“Ctrl+T”可以退回原来的地方。即使用户使用了N“Ctrl+]”查找了N个变量,按N“Ctrl+t”也能回到最初打开的文件,它会按原路返回 。

注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:set tags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件(帚把不到,灰尘不会自己跑掉^_^)。

 

 

 

TagList插件,是一款基于ctags,vim代码窗口旁以分割窗口形式显示当前的代码结构概览,

安装

上网下载Taglist插件,下载完成后解压,再将文件下的taglist.vim使用cp命令拷贝到HOME/.vim/plugin文件夹下(cp -r taglist.vim ~/.vim/plugin)

配置

使用sudo vim /etc/vim/vimrc 编辑vim的配置文档,在其中加入如下命令:

""let Tlist_Auto_Open = 1

let Tlist_Ctags_Cmd = '/usr/bin/ctags'

let Tlist_Show_One_File = 1

let Tlist_Exit_OnlyWindow = 1

使用

Vim中加载代码文件后,可以使用以下命令控制taglist

TlistOpen(直接Tlist也可)打开并将输入焦点至于标签列表窗口,效果如上图所示

TlistClose关闭标签列表窗口

TlistToggle切换标签列表窗口状态(打开←→关闭),标签列表窗口是否获得焦点取决于其他配置

ctl-w+wctl-w+ 方向键窗口切换(taglist本质上是一个vim分隔窗口,因此可以使用ctl-w系列快捷键对窗口进行切换操作)Taglist窗口主要有以下操作

F1:打开帮助回车键:跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)

o:新建一个窗口,跳到标记定义处

p:预览标记定义(仍然在taglist窗口)

空格:显示标记的原型(如函数原型)

u:更新标记列表(比如源文件新增了一个函数,并在保存后,可在taglist窗口按u)

s:选择排序字段(暂时我也不知道什么意思)

d:删除光标所在的taglist文件(如用vi打开了两个文件f1.c,f2.c可以删除f1.c的标记)

x:n放大/缩小taglist窗口

+:展开(指标记)

-:折叠

*:全部展开

=:全部折叠

[[:将光标移到前一个文件的起点

]]:将光标移到后一个文件的起点

q:退出taglist窗口

F1:关闭帮助

 

jeffy-vim-read  自动补全

$ sudo apt-get install exuberant-ctags 

$ svn checkout http://jeffy-vim.googlecode.com/svn/trunk/ jeffy-vim-read-only
$ cd jeffy-vim-read-only
$ ./install.sh

 

 neocomplcache

地址:http://www.vim.org/scripts/script.php?script_id=2620,这个插件有zipvba两种格式,首选vba。这种格式可以直接安装,不用手动分别安装各个文件。具体步骤如下:

1、下载vba格式插件;

2、使用命令:vim neocomplcache*.vba

3、在vim命令状态下:so %

                                     q

插件会自动安装到相应文件夹。

之后,修改版.vimrc文件,加入以下:

syntax on
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set cindent
set nu

if &term=="xterm"
  set t_Co=8
  set t_Sb=^[[4%dm
  set t_Sf=^[[3%dm
endif

let g:neocomplcache_enable_at_startup = 1

Autocomplpop

地址:http://www.vim.org/scripts/script.php?script_id=1879,下载后为zip格式,解压后把各文件放入相应文件夹(/usr/share/vim/**)。

该插件只能根据已有的代码,提供最简单的代码提示,不能根据C++中重要的操作符提供代码提示。该功能还得由OmniCppComplete插件提供。


Error detected while processing /home/carlos/.vim/plugin/acp.vim:
line 13:
***** L9 library must be installed! *****
这是插件放出的一个错误提示,查看plugin里的acp.vim可以看到。是缺少L9 library库。这个也是需要下载的。地址在下面

http://www.vim.org/scripts/script.php?script_id=3252

下载下来,它也是一个插件形式,以同样的方式copy到Vim目录下。
安装完后就可以了。



OmniCppComplete

地址:http://www.vim.org/scripts/script.php?script_id=1520

这个插件是基于ctags数据库即tags文件实现的。

当我们自己下载Vim插件的时候,也可以另外建立目录,放置我们自己的插件。这个目录一般为/home/user/.vim,另外还需要建立一个插件子目录,一个插件文档子目录,以上的可以进入/home/user目录下通过下面的命令执行:

mkdir .vim
cd .vim
mkdir plugin
mkdir doc

然后将下载到的zip文件放到.vim目录下,直接解压(插件也包括两个目录,一个plugin,一个doc,所以它会自动放置到对应的目录)。

注意,我在ubuntu10.10omnicppcomplete-0.41.zip解压后有三个文件夹:after, autoload, doc我直接把这三个文件夹放在 .vim这个文件夹下,并没有放在plugin文件夹里面,因为我把这三个文件夹放在plugin文件夹下面打开vim也就是用vim编辑一个文件的时候会又出错信息,但是放在 .vim也可以正常自动补全,两种方法都试一下看看。

unzip omnicppcomplete-0.41.zip

插件这就算安装完了。然后再到vim配置文件中加入如下的配置:

"-- omnicppcomplete setting --
set completeopt=menu,menuone
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype  in popup window
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DisplayMode=1
let OmniCpp_DefaultNamespaces=["std"]

(前几行就是提供了C++中的./->/::等操作符的提示和自动完成)。

 确保已关闭了vi兼容模式,并允许进行文件类型检测:
   set nocp
   filetype plugin on
   生成标签文件
   ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
   在对C++文件进行补全时,OmniCppComplete插件需要tag文件中包含C++的额外信息,因此上面的ctags命令不同于以前我们所使用的,它专门为C++语言生成一些额外的信息,上述选项的含义如下:
      --c++-kinds=+p : C++文件增加函数原型的标签
      --fields=+iaS : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
      --extra=+q : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全


code_complete(函数提示):
地址:http://www.vim.org/scripts/script.php?script_id=1764
    把下载的code_complete拷贝到plugin目录下,一般都在/usr/share/vim/vim72 /plugin;
ctags命令生成tags文件,ctags -R --c-kinds=+p --fields=+S应该算是建立索引表,然后把生成的tags文件拷贝到编程的目录。在vim中使用<tab>键就可以补全函数原型了。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值