Rob*_*nes 21 c++ linux vim boost ctags
我正在运行Ubuntu 8.04并运行命令:
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/stdlibcpp /usr/include/c++/4.2.4/
在我的系统上为标准C++库和STL(libstdc ++)生成一个ctags数据库,以便与OmniCppComplete vim脚本一起使用.这给了我一个非常合理的4MB标签文件,似乎运行得相当好.
但是,当我对安装的Boost标头运行相同的命令时:
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost /usr/include/boost/
我最终得到了一个1.4 GB的标签文件! 我还没有尝试过,但看起来它似乎太大而无法使用.有没有办法为我安装的Boost标头获得更纤薄,更实用的标签文件?
编辑
正如笔记一样,libstdc ++包含TR1,其中包含了许多Boost库.因此,libstdc ++必须有一些奇怪的东西才能出现4 MB的标签文件和Boost最终得到1.4 GB的标签文件.
刚刚在Boost邮件列表上遇到过这个问题:
Boost-users Boost和autocompletion
答案
感谢Neg_EV弄清问题是什么,但是解决问题的方法比他建议的要好得多:
确保apt-file已安装,并运行以下命令
(我将我的库标签保存在〜/ .vim/tags /中):
$ sudo apt-file update
$ apt-file list boost | grep -E -o '/usr/include/.*\.(h|hpp)' | grep -v '/usr/include/boost/typeof/' > ~/.vim/tags/boost-filelist
$ ctags --sort=foldcase --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost -L ~/.vim/tags/boost-filelist
我已经升级到Ubuntu 10.04和Boost 1.40,这就是我测试这个解决方案,但据我所知,它应该适用于任何Boost版本.
Neg*_*_EV 10
我知道这篇文章有点旧,但我遇到了同样的问题.我进一步调查了一下,似乎是boost中的一个文件夹引起了问题:typeof.我使用的是boost 1.37,我的标签文件是1.5G,typeof是1.4G.所以我刚刚创建了一个没有包含该目录的标签文件,结果大小为70M.我甚至能够在没有空间耗尽的情况下对它进行排序:)我想在更新版本的boost中它们可能是其他太大的项目但是我发现的一般解决方案是这个......
这是我使用的脚本(取自评论):
for i in $(find -maxdepth 1 -type d | grep -v '^\.$' | sed 's/\.\///' ); do
    echo $i;
    ctags -f ~/tmp_tags/$i.tags -R --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++ --sort=foldcase $i;
done
希望这可以帮助.
使用该选项
--sort=foldcase
通过这种方式,标签的搜索变得更快.
引用ctags的手册页:"foldcase值指定不区分大小写(或大小写折叠)排序.快速二进制搜索使用大小写折叠排序的标记文件需要使用标记文件的工具提供特殊支持,例如在ctags readtags库,或Vim 6.2或更高版本(使用"set ignorecase").此选项必须出现在第一个文件名之前"
| 归档时间: | 
 | 
| 查看次数: | 6674 次 | 
| 最近记录: |