vim可以使用ctags制作的tags文件来浏览程序源文件。问题是,当源文件存放在目录树(也就是所谓的source tree)的时候,该怎么办呢?
在缺省情况下,ctags只会处理当前目录里的源文件,而且vim也只会参考当前目录的tags文件。这时候,如果当前目录里的源文件引用了其他目录里的定义,那么vim就无法利用tags文件自动跳转了。解决这个问题主要依靠两个技巧:
一,在目录树的根目录里,使用命令:
在缺省情况下,ctags只会处理当前目录里的源文件,而且vim也只会参考当前目录的tags文件。这时候,如果当前目录里的源文件引用了其他目录里的定义,那么vim就无法利用tags文件自动跳转了。解决这个问题主要依靠两个技巧:
一,在目录树的根目录里,使用命令:
ctags -R 或 ctags --recurse
这两个命令应该是等效的,但是在我目前使用的ctags(版本5.5.4),ctags -R似乎无效。--recurse参数会让ctags遍历整个目录树,分析所有子目录里的文件。最后形成的tags文件会放在根目录里。
HOW TO USE WITH VI
Vi 缺省的期望当前工作目录中有一个名为 "tags" 的标签文件。一旦生成了标签文件,下面的命令执行
按标签索引的特性:
vi -t tag 启动 vi 并且把光标定位在 "tag" 定义所在的文件和行上。
:ta tag 查找一个标签。
Ctrl-] 查找光标下的标签
Ctrl-T 返回跳转到标签前的前一次位置 (不是所有实现都支持)。
Vi 缺省的期望当前工作目录中有一个名为 "tags" 的标签文件。一旦生成了标签文件,下面的命令执行
按标签索引的特性:
vi -t tag 启动 vi 并且把光标定位在 "tag" 定义所在的文件和行上。
:ta tag 查找一个标签。
Ctrl-] 查找光标下的标签
Ctrl-T 返回跳转到标签前的前一次位置 (不是所有实现都支持)。