如何在ubuntu的C / C ++ include目录下使用gvim生成带有繁琐ctags的标签文件?

我在Windows 7中使用带有TDM-GCC 64的GVim 7.4。我知道这个编译器的include目录,并且把path添加到gvim的标签searchpath中。 在Windows中一切都很好。

但是我对ubuntu是新手,我目前安装了ubuntu 13.10(Saucy),但是对编译器的include目录感到困惑。

我发现这些目录中有一些是:

/usr/include /usr/src /usr/local/include /usr/include /usr/lib/gcc/i686-linux-gnu/4.8 /usr/lib/gcc/x86_64-linux-gnu/4.8/include 

最后我创build了一个shell脚本如下:

 #!/bin/sh cd /usr/include sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.ch --langmap=C++:.Chccpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags * cd /usr/src sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.ch --langmap=C++:.Chccpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags * cd /usr/local/include sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.ch --langmap=C++:.Chccpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags * cd /usr/include sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.ch --langmap=C++:.Chccpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags * cd /usr/lib/gcc/i686-linux-gnu/4.8 sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.ch --langmap=C++:.Chccpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags * cd /usr/lib/gcc/x86_64-linux-gnu/4.8/include sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.ch --langmap=C++:.Chccpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags * 

但是这个脚本正在生成一个巨大的标签文件,因此vim在search函数,variables,结构体,原型等时变得越来越慢。当我按下“<CX> <CO>”或者Tab(我configuration了全向标签) ,vim冻结了一段时间然后build议我正在寻找的内容。

最后我决定放弃recursion(-R)选项,但我的问题是:

1)ubuntu中的实际包含目录是什么?

2)我应该在哪里使用recursion,哪里不是?

3)通常不需要很多目录,比如'/ usr / src /'或'/usr/src/nvidia-331.38',这些目录主要包含Linux头文件和NVIDIA驱动函数。 什么是这些types的目录,以便我可以列在我的.vimrc作为最后的select?

我正在寻找一个解决scheme,find一切(函数,variables,结构),而不必减慢vim。

提前致谢。

我会建议/ usr / include和/ usr / local / include递归作为标题的最基本的路径。

在大多数类Unix系统(包括Linux和FreeBSD发行版)中,/ usr / include是查找C和C ++库标头最基本的地方。

系统管理员经常(但并非总是)在/ usr / local中安装附加软件,通常(但并非总是)意味着添加的库将位于/ usr / local / lib中,并且其C / C ++头文件将位于/ usr /本地/包括。

在某些类Unix系统上,可选软件安装在/ opt而不是/ usr / local。

通常在开放源代码的类Unix系统上,/ usr / src将包含操作系统的源代码和头文件,包括内核和“user land”(即用户可能从命令行使用的命令)。 通常,除非您正在开发应与操作系统紧密集成或实际上是操作系统的一部分的应用程序,否则您将不需要/ usr / src路径中的标头(但不在/ usr / include中)。