Vim键映射错误

Vim键映射错误,vim,keymapping,omnicppcomplete,Vim,Keymapping,Omnicppcomplete,我在使用OmniCPP和vim时遇到问题。实际上,我不确定这是一个.vimrc问题还是一个完整的问题。在my.vimrc中,当我点击ctrl+F12时,我有以下命令为我的项目生成标记: map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR> 这对我来说似乎很奇怪,因为我没有在命令中使用--c++-n选项。更奇怪的是,如果我只是在终端上手动运行命令 ctags -R -

我在使用OmniCPP和vim时遇到问题。实际上,我不确定这是一个.vimrc问题还是一个完整的问题。在my.vimrc中,当我点击ctrl+F12时,我有以下命令为我的项目生成标记:

map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
这对我来说似乎很奇怪,因为我没有在命令中使用--c++-n选项。更奇怪的是,如果我只是在终端上手动运行命令

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q
它生成了一个标记文件,一切看起来都很正常。所以把它映射到一个键会把它搞砸。我在这里按照维基上的说明操作:

我最困惑的是,当我不使用--c++-n时,为什么它会抱怨--c++-n。非常感谢您的帮助

编辑:

两者都有:vim中的“!哪个CTAG”和shell返回中的“哪个CTAG”/usr/bin/ctags。然而,当我执行“ls/usr/bin | grep-ctags”时,它会返回“ctags”和“ctags-exuberant”

我移除并重新安装了ctags exuberant。现在,当我尝试在vim中点击c-F12时,它不会在命令上给我一个错误…它会将我带回shell,点击Enter继续,但在代码中,当我点击对象后的句点时,它仍然显示“Pattern not found”

但是,如果我在一个单独的目录中创建一个像这样的小测试文件:

struct MyStruct {
  int a;
  int b;
  int long_name;
};

int main(int argc, char** argv) {

  MyStruct a;
  a.      
}

点击c-F12来构建标记列表,自动完成功能可以正常工作……如果我有一个在另一个文件中定义的类(尽管仍然在同一个目录中),我希望它能够工作

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


是否在vim中,
ctags
是您的另一个文件/可执行文件?什么是
:!vim中哪些CTAG
表示,哪些CTAG表示来自shell?

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


是否在vim中,
ctags
是您的另一个文件/可执行文件?什么是
:!vim中哪个CTAG
说了什么?shell中哪个CTAG说了什么?

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

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

我猜应该是exuberant CTAG和普通ctags,谢谢您的反馈。我根据你的提问更新了我的答案。我猜ctags和普通ctags会很好。谢谢你的反馈。我根据你的问题更新了我的答案。
struct MyStruct {
  int a;
  int b;
  int long_name;
};

int main(int argc, char** argv) {

  MyStruct a;
  a.      
}