发信人: neman (行胜于言), 信区: VIM
标 题: Ctags with Vim
发信站: BBS 水木清华站 (Mon May 24 08:42:57 2004), 站内
usage: $ctags [-R] inc_dir/*.h include_dir/*.hpp src_dir/*.c
example: $ ctags -R `find . -name "*.c"` `find . -name "*.h"`
su; cd /usr/include; ctags --c-types=+p+x -sort -R
生成非常完整,巨大而有序的tags
各用户在 ~/.vimrc中添加set tags= ./tags, tags, /usr/include/tags即可使用
[注1]+p开关会跳到变量声明的地方而不是它的实现,所以还是采用缺省值,
不要--c-types这个选项,或者只要+x(推荐),其它无所谓。
还有/usr/include并不是/usr/src/linux/include的一个符号链接,
所以如果是看内核中一些变量的定义的话应该到/usr/src/linux上面用ctags
ctags浏览代码 (有的命令说明可能不准确)
:set tags=/Dir/tags 设置需要的tags文件,
可以多个:set tags=/dir1/tags, /dir2/tags
:tag xxx 转到满足查找代码的定义处,简写为 :ta xxx
:tag /^xxx 转到以xxx为起始的tag处
other find tags :stag/ptag/ts/tj/pts/ptj /<pat>
:tag /xxx 列出所有包含xxx的tag
:tag 转到前一个浏览过的tag处
vi -t xxx 直接定位到xxx的定义处
:tn / :tp 转到下/上一个tag代码处,可以使用:5tn的形式
:tr / :tl 转到首/尾tag代码处
<C-]>, <C-左键> 转到光标所在函数或者变量的定义处 g+左键 (GUI) [注2]
<C-T>, <C-右键> 回到跳转前的代码处(适用于任何跳转) g+右键 (GUI)
:tags 列出当前tag栈的内容
:ts xxx 列出所有匹配的代码及其所属文件,并提供选择浏览
:sts xxx 列出匹配处提供选择在新窗口中打开文件
:tj xxx 类似 :ts xxx,当只有一个匹配时直接转到代码处
g] 与 :ts xxx 功能相同(tag为光标下的标识符)
<C-w> g] 等价于 :sts xxx
g <C-]> 等价于 :tj xxx
:pt? xxx 提供上述命令(?为j,s)的预览功能,退出窗口 :q!
:t?! xxx 当前文件的修改被丢弃转到目标文件中
<C-w> } 在预览窗口中显示当前光标下的tag
:ptl / ptf / ptn /ptp 类似于 tl,tf,tn,tp
:che 察看没有找到的头文件(checkpath)
makeprg :set makeprg=gcc\ yourfile.c 为在线编译设置
:make 在线编译
:cn / :cN 移动到编译的 下/上 一个error处
:stag xxx 查找xxx的声明处并在新窗口中打开
:ta {ident} 跳转到标识符定义处
gd 跳转到局部标识符定义处
[注2] Ctrl-]碰巧是telnet的终端符,如果远程编辑文件可能会遇到一些问题,
请参考在线帮助:h ^]。多数telnet都允许使用命令telnet -E hostname来打开
或关闭该脱字符,或者用telnet -e escape hostname来指定另外一个脱字符
来代替^],请man telnet参看-E -e的帮助。
--
祝所有我关心的人 幸福 快乐
祝所有关心我的人 快乐 幸福
当回首往事时,后悔没有去做的事总比后悔做了的事情多
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.68.*]
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。