vim代码补全


从图书馆里面借的那本《vi和vim编辑器》马上就要还掉了。有点舍不得,自己虽然没看多少,想着赶快再看一会吧。

想想自己在linux上面写数据结构,没有代码补全还是比较麻烦的。于是就翻到了代码自动补全这里。

在说代码补全之前,还是得先再复习 一下ctags标签,下面这段话摘自wooin

,这下可厉害了, Tag文件(标签文件)可是程序员的看家宝呀,你可以不用它,但你不能不知道它,因为Linux内核源码都提供了"make tags"这个选项.下面我们就来介绍Tag文件.

tags
文件是由ctags程序产生的一个索引文件, ctags程序其是叫"Exuberant Ctags",Unix上面ctags程序的替代品,并且比它功能强大,是大多数Linux发行版上默认的ctags程序.那么tags文件是做什么用的呢?如果你在读程序时看了一个函数调用,或者一个变量,或者一个宏等等,你想知道它们的定义在哪儿,怎么办呢?grep?那会搜出很多不相干的地方.现在流行用是的<C-]>,谁用谁知道呀,当光标在某个函数或变量上时,按下"Ctrl+]",光标会自动跳转到其定义处,够厉害吧,你不用再羡慕Visual Studio的程序员了,开始羡慕我吧~_~.

你现在先别急着去按<C-]>,你按没用的,要不要我干什么呀,你现在要做的是查查你电脑里有没有ctags这个程序,如果有,是什么版本的,如果是Ctags 5.5.4,就象我一样,你最好去装一个Ctags 5.6,这个在后面的自动补全章节中会用到.在这个网站: http://ctags.sourceforge.net,下载一个类似ctags-5.6.tar.gz的文件下来(现在好像5.7版的也出来了,不过我还没用过):

用下面的命令解压安装:

$ tar -xzvf ctags-5.6.tar.gz
$ cd ctags-5.6
$ make
# make install  
//
需要root
权限


然后去你的源码目录,如果你的源码是多层的目录,就去最上层的目录,在该目录下运行命令: ctags -R
我现在以 vim71的源码目录做演示

$ cd /home/wooin/vim71
$ ctags -R

此时在/home/wooin/vim71目录下会生成一个tags文件,现在用vim打开/home/wooin/vim71/src/main.c

$ vim /home/wooin/vim71/src/main.c

再在vim中运行命令:

:set tags=/home/wooin/vim71/tags

该命令将tags文件加入到vim中来,你也可以将这句话放到~/.vimrc中去,如果你经常在这个工程编程的话.
下面要开始真刀实枪的开干了,如下图,将光标放在setmouse()函数上

(---
3 ---)

此时按下<C-]>,光标会自动跳到setmouse()函数的定义处,见下图:

(---
4 ---)

如果此时你还想再跳回刚才的位置,你还可以按<C-T>,这样又跳回到setmouse()函数被调用的地方了,变量,结构,,等等,都可以的,赶快试试吧.....

此时在回头学习一下第3节中说的vim手册吧

:help usr_29


不过还有一个小瑕疵,你修改程序后,比如增加了函数定义,删除了变量定义, tags文件不能自动rebuild,你必须手动再运行一下命令:

$ ctags -R

使tags文件更新一下,不过让人感到欣慰的是vim不用重新启动,正在编写的程序也不用退出,马上就可以又正确使用<C-]><C-T>.


我自己的工作目录是在home下的Linux-software下面,所以自己是在.vimrc里面添加了下面这句话:

:set tags=/home/gaoxin/Linux-software/tags  (当然了gaoxin是我的家目录名称),这样每次打开新的文件的时候都能用到tags文件里面的标签了,:-)


好了,复习完了ctags之后,可以开始看代码补全了下面列出了不同的代码补全方法:


Ctrl+X Ctrl+L

整行补全

Ctrl+X Ctrl+N

根据当前文件里关键字补全

Ctrl+X Ctrl+K

根据字典补全

Ctrl+X Ctrl+T

根据同义词字典补全

Ctrl+X Ctrl+I

根据头文件内关键字补全

Ctrl+X Ctrl+]

根据标签补全

Ctrl+X Ctrl+F

补全文件名

Ctrl+X Ctrl+D

补全宏定义

Ctrl+X Ctrl+V

补全vim命令

Ctrl+X Ctrl+U

用户自定义补全方式

Ctrl+X Ctrl+S

拼写建议


数据结构中用到最多的肯定就是结构体了。下面看下这个全能补全功能:

我这里要介绍的功能叫"new-omni-completion(全能补全)",你可以用下面的命令看看介绍:

:helpnew-omni-completion


你还需要在~/.vimrc文件中增加下面两句:

filetype pluginindent on

打开文件类型检测,加了这句才可以用智能补全

setcompleteopt=longest,menu

关掉智能补全时的预览窗口

请确定你的Ctags5.6已经安装好,并且生成的tags文件已经可以用了,那么我们就要抄家伙开搞了.
vim打开源文件

$ vi/home/wooin/vim71/src/main.c

设置tags文件

:settags=/home/wooin/vim71/tags

随便找一个有成员变量的对象,比如"parmp",进入Insert模式,将光标放在"->"后面,
然后按下"Ctrl+XCtrl+O",此时会弹出一个下列菜单,显示所有匹配的标签,如下图:

(---
18---)
此时有一些快捷键可以用:

Ctrl+P

向前切换成员

Ctrl+N

向后切换成员

Ctrl+E

表示退出下拉窗口,并退回到原来录入的文字

Ctrl+Y

表示退出下拉窗口,并接受当前选项


如果你增加了一些成员变量,全能补全还不能马上将新成员补全,需要你重新生成一下tags文件,但是你不用重启vim,只是重新生成一下tags文件就行了,这时全能补全已经可以自动补全了,还真够"全能".

下面这张截图是help文档里面关于new-omni-completion

vim代码补全_第1张图片

好。代码补全又复习了一遍,下次写数据结构应该会省很多时间了^_^

你可能感兴趣的:(数据结构,linux,vim,insert,tags,linux内核)