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)命令
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)命令
相关文章推荐
- vim 和 cscope & ctags 结合使用
- 将Vim配置成为一款强大的编辑工具之 ctags的安装和使用
- vim: ctags cscope taglist使用快速掌握
- Vim + Markdown 结合使用
- vim 中Ctags的安装和使用
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- [转]vim ctags使用方法
- 转:vim插件 ctags 和 taglist 的安装和使用
- 使用VIM开发软件项目 - (10) 程序员的利器: cscope
- Cscope的使用(领略Vim + Cscope的强大魅力)
- 4000 vim 中Ctags的安装和使用
- 使用Vim+Ctags+Cscope阅读源代码
- 日常生活小技巧 -- vim 中 ctags 的安装和使用
- vim下ctags的使用
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete
- Vim配置 显示行号 语法高亮 智能缩进 更适合程序员使用
- Linux 环境使用vim搭建php IDE -- 提高代码编写数度数倍!手把手教你打造程序员的上古神器VIM!
- Vim+Ctags+Cscope的使用
- 使用vim + cscope/ctags
- cscope、ctags和vim简明使用流程