Vim键映射错误

时间:2013-07-10 14:41:42

标签: vim keymapping omnicppcomplete

我在使用带有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

它生成一个标记文件,一切似乎都运行得很好。因此,将其映射到密钥的一些事情正在弄乱它。我按照维基上的说明进行操作: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-ecuberant。现在,当我尝试在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来构建标记列表,自动完成工作正常......如果我有一个在另一个文件中定义的类(尽管仍然在同一个目录中),我希望它能工作。

2 个答案:

答案 0 :(得分:4)

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

可能是因为在vim中,ctags是另一个文件/可执行文件吗? :!which ctags在vim中说什么以​​及which ctags在shell中说了什么?

答案 1 :(得分:1)

我重新安装了旺盛的ctags并解决了问题。