用ctags生成绝对路径索引

来源:互联网 发布:pci总线 linux 编辑:程序博客网 时间:2024/04/30 00:47

用vim编写或阅读模块源码时,常常想跳转到某个内核函数的实现处看看,但内核源码和模块源码是处于不同子目录下的,怎么用ctags跳转呢?


假设我们的文件夹分布是这样的:

$ tree -L 2.├── linux-src│   └── ...└── my_module    └── my_mod.c

首先,vim对tags文件的查找是自动递归的,所以我们可以先进入linux-src文件夹生成tags文件(先别急着这么做),将生成的tags文件拷贝到父目录,而my_module目录里可以有你自己的工程的tags文件,也就是这种结构:

$ tree -L 2.├── linux-src│   ├── ...│   └── tags├── my_module│   ├── my_mod.c│   └── tags└── tags

当你想要查找my_mod.c里某个函数的定义时,vim会先查找my_module目录里的tags文件在查找父目录里的tags文件

但是,这样你可能得一个File “xxx” dose not exist.的错误.原因是你在linux-src目录里生成并拷贝到父目录的tags文件是根据相对路径生成的,所以移动tags文件后它就可能找不着路了.解决办法是根据绝对路径生成父目录里的那个tags文件.怎么做呢?其实很简单
一般情况下我们生成tags文件用的命令是

$ ctags -R .

这样生成的tags文件是基于相对路径的,要生成基于绝对路径的tags,只需把.换成`pwd`

$  ctags -R `pwd`

Enjoy.

0 0
原创粉丝点击