用ctags生成绝对路径索引
用vim编写或阅读模块源码时,常常想跳转到某个内核函数的实现处看看,但内核源码和模块源码是处于不同子目录下的,怎么用ctags跳转呢?假设我们的文件夹分布是这样的:$ tree -L 2.├── linux-src│└── ...└── my_module└── my_mod.c首先,vim对tags文件的查找是自动递归的,所以我们可以先进入linux-src文件夹生成tag
·
用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.
更多推荐
已为社区贡献1条内容
所有评论(0)