我在Windows 7中使用GVim 7.4和TDM-GCC 64. 我知道這個編譯器的包含目錄, ,並將路徑添加到gvim的標籤搜索路徑中。 在Windows中一切都很好。如何在ubuntu的C/C++包含使用gvim的目錄中生成帶有繁瑣ctags的標籤文件?
但我是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
最後,我創建了一個shell腳本如下:
#!/bin/sh
cd /usr/include
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.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:.c.h --langmap=C++:.C.h.c.cpp.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:.c.h --langmap=C++:.C.h.c.cpp.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:.c.h --langmap=C++:.C.h.c.cpp.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:.c.h --langmap=C++:.C.h.c.cpp.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:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *
但此腳本生成一個巨大的龐大的標籤文件, 因此VIM是當搜索功能,變量,結構, 原型等時變慢。 當我按「< CX> < CO>」或Tab(我配置了omni-com pleal to Tab), vim正在凍結一段時間,然後提示我正在尋找的內容。
最後,我決定放棄遞歸(-R)選項,但我的問題是:
1)什麼是實際包含在Ubuntu目錄?
2)我應該在哪裏使用遞歸,哪裏不是? 3)許多目錄通常不需要,比如'/ usr/src /'或'/usr/src/nvidia-331.38' ,它們大多包含Linux頭文件和NVIDIA驅動程序函數。 什麼是這些類型的目錄,以便我可以將它列出在我的.vimrc中作爲最後一個選項?
我正在尋找一個解決方案,以找到一切(函數,變量,結構),而不必減慢vim。
在此先感謝。
我認爲「一切」和「放慢」是同一結果的一部分;也就是說,如果不放慢Vim,就不能擁有一切。所以我認爲你需要定義一些你將要使用的庫,並且只爲這些庫的頭文件生成標籤。 – CXJ
那麼請給我建議標準C/C++頭文件的最基本要求。目前這對我來說已經足夠了。 –