繁体   English   中英

Vim键映射错误

[英]Vim key mapping error

我在使用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中的“:!哪个ctags”和shell中的“哪个ctags”都返回“ / usr / bin / ctags”。 但是,当我执行“ ls / usr / bin | grep ctags”时,它同时返回“ ctags”和“ ctags-exuberant”。

我删除并重新安装了ctags-exuberant。 现在,当我尝试在vim中命中c-F12时,它没有给我命令上的错误...它使我回到外壳中,按Enter继续,但是在代码中,当我在对象,它仍然显示“未找到模式”。

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

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

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

  MyStruct a;
  a.      
}

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

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

难道是在vim中, ctags对您来说是另一个文件/可执行文件? :!which ctags在vim中说了什么, which ctags在shell中说了什么?

我重新安装了茂盛的ctags,问题已解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM