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