再会,
我通常处理相对较小(少于 20,000 行代码)的项目,这些项目都包含在一个目录中,有自己的 Makefile,并且相当容易使用。
VIM 是我首选的编辑器,当我打开一个项目时,我通常通过映射到F10键来构建 ctags 列表:
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
CTRL这允许我通过将光标移动到文本上并点击+]以及通过 OmniCppComplete 使用带有下拉列表的代码完成来跳转到变量/结构/等的定义。
然而,我现在正在做一个稍微大一点的项目,它利用了很多结构。此外,其中许多结构都有其他自定义结构的数组作为成员,因此代码完成现在对我来说是一个非常有用和重要的工具。
我有两个包含大量.C
文件和.h
文件的路径,它们可能会因机器而异。然而,在每台机器上,我们的.bashrc
文件中都有一个环境变量指向它们,如下所示:
SDK_SRC_PLUS_HEADERS=/public/sdk
THIRD_PARTY_SDK=/private/sdk
我希望能够让 VIM 在我尝试执行代码完成时自动引用这些附加路径的内容(通过 VIM 的内置 OmniCppComplete 功能),或者当我在 VIM 中使用CTRL+时跳转到这些位置的文件]跳转到结构、函数、变量等的定义。
因此,对于上述两种路径,我cd
都进入了它们,并通过ctags -R
. 然后,我修改了我的~/.vimrc
文件以包含其他标签路径,如下所示:
tags=./tags
tags+=$SDK_SRC_PLUS_HEADERS/tags
tags+=$THIRD_PARTY_SDK/tags
然后cd
我进入我的项目/home/user1/projects/test
,启动 VIM,然后F10在 VIM 中对其进行索引。但是,这根本不起作用。事实上,它破坏了我甚至只为项目本身使用标签的能力(即:CTRL+]现在什么都不做)。
有没有人对我如何通过环境变量使用多个源目录来获得代码完成源标签和跳转到定义有任何建议?
提前感谢大家的时间和帮助!