工程内函数的跳转
只需要在工程目录顶层生成tags文件。当在子目录某文件内需要跳转时,vim 会逐级向上查找tags文件。
- 在顶层目录生成tags文件
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
- vimrc 设置tags 搜索路径 。后面的’;'不能省略。
set tags=tags;
set autochdir
- 用到的跳转命令
跳转到函数定义:ctrl+]
跳转后返回:ctrl+t
工程间函数的跳转
- 假设有两个工程(A、B)的文件需要互相跳转。则需要分别在工程A、工程B顶层目录生成tags文件。
- 将A、B工程的tag文件添加到tags搜索路径(下面介绍.lvimrc 插件,有更合理的配置)。
set tags +=/prjADir/tags
set tags +=/prjBDir/tags
为每个工程单独设置一个.vimrc 文件(.lvimrc)
设置autochdir
后,vim打开哪个文件,vim工作目录就设置为了当前文件所在的目录、这样方便了tags跳转,但是要查找其他目录的文件,就没办法直接跳转了。
vim 中gf、find 等命令,都依赖于path路径进行搜索和跳转。如果在path路径中搜索不到要跳转的问题,就没办法跳转。如果把每个工程的路径都添加到path 中,会导致要搜索的文件太多,影响效率。
解决利器: embear/vim-localvimrc
插件
- vim-localvimrc 插件提供了自动加载当前工程.lvimrc 文件的机制。.lvimrc 只需要放在工程的顶层目录下,当vim打开该目录下的任何子文件时,插件都会自动向上查找加载.lvimrc 文件。
- 插件基本配置
关闭每次切换文件时的提问
let g:localvimrc_ask=0
使能插件
let g:localvimrc_enable=1
- 简单的.lvimrc 配置
添加当前工程所有目录到path路径
set path+=/prjADir/**
假设要跳转到B工程的函数,添加B工程的tags文件链接
set tags +=/prjBDir/tags
- 会用到的一些命令
查看当前path
set path?
显示版本及默认vimrc配置加载路径
:version