在 OS X 上,我为系统生成了一组 ctag,包括使用以下命令:
ctags -f c -h ".h" -R --c-kinds=+p --fields=+iaS --extra=+q /usr/include
这是在一个~/.vim/ctags/
目录中运行的,我将我为系统范围的头文件生成的所有 ctags 放在其中(我也有条件加载的 ROS 和 CPP 的东西,但这既不是这里也不是那里)。
反正。#include
ctags 文件在我的 .vimrc 中设置正确,vim 肯定可以看到 ctags,但由于某种原因,如果我写出整个符号然后开始退格,自动完成弹出窗口只会显示 d 头文件的结果。举个例子,如果我#include <string.h>
在一个项目中,然后我想调用strlen()
,然后我开始输入str
活动的 vim 缓冲区,我只会得到当前在 vim 缓冲区中的符号的结果。但是,如果我输入strlen
然后开始退格一两个字符并点击<C-n>
,弹出菜单将填充来自任何其他包含的头文件的匹配项。
编辑:事实证明,如果我只是按“s”然后<C-n>
,它也可以。所以问题似乎是它只有在手动启动弹出菜单时才有效。这让我认为这是一个插件问题(见下文)
附加信息:
completeopt
设定为completeopt=menuone,menu,preview,longest
我有OmniCppComplete,我想这可能会干扰行为。目前没有为 C++ 文件有条件地加载它。如果您希望我从我的 .vimrc 编辑和发布我的 OmniCppComplete 设置,请询问。
我还安装了AutoComplPop,但我没有对其进行任何配置,因此它以默认设置运行。还没有真正研究过这个插件,所以不知道它的某些行为是否会干扰结果。
老实说,我对 Vim 很陌生,我只是不知道从哪里开始调试这个问题,无论是使用随机插件还是使用我的 .vimrc 设置。