gpt4 book ai didi

VIM - 从项目中的多个位置采购标签

转载 作者:行者123 更新时间:2023-12-05 00:21:07 25 4
gpt4 key购买 nike

再会,

我通常处理相对较小(少于 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 的内置 OmniCppComplete 功能)时,我希望能够让 VIM 自动引用这些附加路径的内容,或者当我使用 CTRL+] 时跳转到这些位置的文件vim 跳转到结构体、函数、变量等的定义。

因此,对于上述两条路径,我 cd进入它们,并通过 ctags -R 生成标签.然后,我修改了我的 ~/.vimrc文件以包含其他标签路径,如下所示:
tags=./tags
tags+=$SDK_SRC_PLUS_HEADERS/tags
tags+=$THIRD_PARTY_SDK/tags

然后我 cd进入我的项目 /home/user1/projects/test ,启动 VIM,然后在 VIM 中按 F10 对其进行索引。但是,这根本不起作用。事实上,它破坏了我什至只为项目本身使用标签的能力(即:CTRL+] 现在什么也不做)。

有没有人对我如何通过环境变量使用多个源目录获得代码完成源标记和跳转到定义有任何建议?

提前感谢大家的时间和帮助!

最佳答案

我想添加到@sehe 提供的解决方案中。

这是我对 .vimrc 所做的最后一组更改.第一行用于将扩展的环境变量路径添加到我的 tags多变的。另一个用于在我必须更新我的 SDK 并且不希望能够意外使用过时标签的情况下自动更新标签:

" CTAGS tag generation for OmniCppComplete
set tags+=./tags
exec expand("set tags+=$SDK_SRC_PLUS_HEADERS/tags")
exec expand("set tags+=$THIRD_PARTY_SDK/tags")
" Can verify taglist is correct via ":set verbose tags?" command

" Create a mapping to delete the old tags, re-generate them, and use them
map <F10> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . \| rm -f $SDK_SRC_PLUS_HEADERS/tags \| ctags -R -f $SDK_SRC_PLUS_HEADERS/tags $SDK_SRC_PLUS_HEADERS/tags \| rm -f $THIRD_PARTY_SDK/tags \| ctags -R -f $THIRD_PARTY_SDK/tags $THIRD_PARTY_SDK/tags \| echo "Done re-generating tags."<CR>

关于VIM - 从项目中的多个位置采购标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com