您的位置:首页 > 职场人生

vim之于程序员--强大的vim结合ctags的使用

2009-11-14 19:55 295 查看
1.安装ctags

1)到http://ctags.sf.net下载最新的ctags

2)使用apt-get 安装

$sudo apt-get install exuberant-ctags

2.使用ctags生成tags,

$ctags *.c生成所有C文件的tags,生成的文件就叫tags

$ctags -R .递归生成所有目录下的tags。

3.在vim中使用ctags

1):tag startlist

就会跳转到startlist定义处,即使它在其他文件里。

2)Ctrl-]

这是一种更加快速的搜索方法,按下Ctrl-]后,它会取当前光标指向的word作为tag,然后跳转到定义处。当你查看函数时,发现它调用了另一个函数,那么你就可以快速的定位它。

3):tags

列出到目前位置,你用到过的tags

4)Ctrl-t

当然,你能够一直往前跳当然很好了,但是看完这个函数想回去怎么办?那就是Ctrl-t了,

5):tag

将会跳转到序列的最后一个地方,也就是最深的一层,当你在回跳后可以一下就跳回来。

6)Ctrl-t和:tag都可以加一个数字指定步长。

7):stag tohere

将会在一个split窗口中显示另一个tag,即使它在当前文件内,因为当前文件可能很长,所以如果一下子跳开,我们可能就不能看到刚才正在浏览的地方,所以另外打开一个分隔窗口来显示。

8)Ctrl-w ]

会分隔当前窗口并跳转到光标下的tag,对应于前面的Ctrl-]

9):set tags=./tags,./../tags,...

使用多个tags文件

如果源文件位于多个目录下,你可以为每个目录建立一个tags文件,vim会只在当前tags目录下跳转(如果多个目录中有重名的tag的话,就很有用了),但是并不是我们当前所处的位置就不想去查看其他目录的tag,这是就需要

:set tags=~/proj/*/tags

10)同名tag

:tag 会跳转到第一个符合条件的,本文件优先。

:tnext/:tn 轮转到下一个同名tag

:tp 跳转到上一个同名tag

:tselect tagname 如果有很多tag都叫tagname,那么使用tnext就太没有生产力了,这是需要使用tselect tagname,vim会显示一个列表,然后你输入数字即可。

11)tag补全

这个没有什么好说的,如同bash补全一样,而且还可使用搜索:tag /block 会查找tagname中包含block的tag,而且你也可以不必换回车,直接按Tab,会自动不全,这个不全更厉害,它是搜索的,而不是说你必须输入tag的开头部分。

12):tselect /^write_

注意上面使用的是:tselect命令,而且使用了搜索匹配开头

13)tags的浏览器

*首先建立一个标识符列表

$ctags --c-types=f -f functions *.c

*启动VIM

:vsplit functions

14)预览函数

当在调用某个函数的时候可能记不清它的参数,这是需要看一下,但是使用:tag tagname的话,光标就跑过去了,这是就需要使用预览技术了。

:ptag tagname 打开一个预览窗口,而且光标保持不便

:pclose 看完了,当然就要关闭了,而不是使用快捷键去切换窗口关闭窗口。

15)在代码块中移动

[{ 跳转到代码块的开头

]} 代码块结尾

16)跳转到变量定义

[i 会显示当前变量定义的行

[<Tab> 会跳转到匹配的行

17)[i会搜索文件include的文件,以及递归,如果只想限制在当前文件使用gd(goto definition)命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: