家里的vim突然没法使用omnicppcomplet了,老是提示“找不到模式”。google了很久,尝试了所有的方法,都无解。
最后发现原来是因为项目的根目录那个“大的tags文件”被我删掉了。从新用 ctags -R .... 命令生成就OK了。
解释一下上面这句话:根据exuberant ctags网站上FAQ的建议,我的项目使用的是“每层目录生成本目录的tag文件,项目根目录生成一个包含全体(所有子目录)的tag文件”的方式,这样可以在改动一个子目录时,不需要更新整个项目的tag文件,只需更新那个目录下的tag就可以了。
回想一下omnicppcomplete的帮助文件,作者提供的示例就是使用-R参数的ctags命令。难道这个插件有什么特殊之处?
试验一下:
在home目录下新建一个cpp文件,输入几行代码,使用这个命令来生成tags文件:!ctags * --c++-kinds=+px --fields=+iaS --extra=+q
果然无法工作。请注意这个命令是只对当前目录的文件扫描 tags。
改用这个命令:ctags -R --c++-kinds=+px --fields=+iaS --extra=+fq --excmd=p,omnicppcomplete工作正常。
结论:这个-R参数太重要了。。。