0

我在使用带有 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 来构建标签列表,自动完成工作得很好......如果我有一个在另一个文件中定义的类(尽管仍在同一个目录中),我希望它能够工作。

4

2 回答 2

4

问题不在于键映射。如果我将您的映射行复制到 my.vimrc并在 gvim 中按 ctrl-f12,它会回显它运行的命令,它正是上面的命令。

可能是在 vim 中,ctags是另一个文件/可执行文件吗?:!which ctagsvim 中说什么,which ctagsshell 中说什么?

于 2013-07-10T16:06:03.210 回答
1

我重新安装了 exuberant ctags,问题得到解决。

于 2013-08-13T19:02:24.257 回答