VIM ctags的一个小技巧

vim可以使用ctags制作的tags文件来浏览程序源文件。问题是,当源文件存放在目录树(也就是所谓的source tree)的时候,该怎么办呢? 
在缺省情况下,ctags只会处理当前目录里的源文件,而且vim也只会参考当前目录的tags文件。这时候,如果当前目录里的源文件引用了其他目录里的定义,那么vim就无法利用tags文件自动跳转了。解决这个问题主要依靠两个技巧: 
一,在目录树的根目录里,使用命令:
ctags -Rctags --recurse
这两个命令应该是等效的,但是在我目前使用的ctags(版本5.5.4),ctags -R似乎无效。--recurse参数会让ctags遍历整个目录树,分析所有子目录里的文件。最后形成的tags文件会放在根目录里。 
二,编辑vim的设置文件(_vimrc或.vimrc),添加两行 

set tags=tags;

set autochdir

注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录 中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。
使用这两个技巧后,就可以在目录树中自由的浏览源程序了。
另外,几个相关的话题:一个是,我发现用这种方法跳转到别的目录,只对ctrl-]和g ctrl-]有效果,而:ta或:ts命令,却还是只使用当前目录的tags文件,不知道这算不算是vim的bug。
另外,就算是在根目录使用了ctags命令,最好也还是在常用的目录里再使用一次ctags命令。因为vim总是首先在当前目录中寻找tags文件,所以如果第一次搜索就能找到的话,那么速度就会快多了。
另外一个话题是,尽管用g ctrl-]来跳转是非常方便的命令,但是因为这个命令要搜索整个tags文件来找出所有的匹配定义,所以速度上就比只找出第一个定义的ctrl-]要慢多了。如果对于定义比较确定的话,那么最好还是用ctrl-]来执行吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值