我在使用带有 vim 的omnicppcomplete 时遇到问题。实际上,我不确定这是 .vimrc 问题还是omnicppcomplete 问题。在我的 .vimrc 中,当我点击 ctrl+F12 时,我有这个命令为我的项目生成标签:
map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
但它失败并出现此错误:
ctags: Unknown option: --c++-n
shell returned 1
这对我来说似乎很奇怪,因为我没有在命令中使用 --c++-n 选项。对我来说更奇怪的是,如果我只是在终端中手动运行命令
ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q
它生成一个标签文件,一切似乎都很好。所以把它映射到一个键上的东西把它搞砸了。我在这里按照 wiki 上的说明进行操作:http: //vim.wikia.com/wiki/C%2B%2B_code_completion。
当我不使用它时,我很困惑为什么它抱怨 --c++-n 。任何帮助深表感谢。
编辑:
vim 中的 ":!which ctags" 和 shell 中的 "which ctags" 返回 "/usr/bin/ctags"。但是,当我执行“ls /usr/bin | grep ctags”时,它会返回“ctags”和“ctags-exuberant”。
我删除并重新安装了 ctags-exuberant。现在,当我尝试在 vim 中按 c-F12 时,它不会给我命令错误...它让我回到 shell 以按 Enter 继续,但在代码中当我在对象,它仍然说“找不到模式”。
但是,如果我在单独的目录中创建一个像这样的小测试文件:
struct MyStruct {
int a;
int b;
int long_name;
};
int main(int argc, char** argv) {
MyStruct a;
a.
}
点击 c-F12 来构建标签列表,自动完成工作得很好......如果我有一个在另一个文件中定义的类(尽管仍在同一个目录中),我希望它能够工作。