1

我开始使用AutoComplPop来自动完成代码。它适用于我正在编辑的单个文件,但如果 file1 正在引用 file2 中定义的方法,则找不到它。

文档没有指定是否有办法让它搜索整个项目目录,甚至只是所有打开的缓冲区,所以我不知道这是否只是插件不做的事情,或者我是否需要启用某些东西.

如果相关的话,我正在两个 Ruby 文件上对其进行测试。谢谢!

4

4 回答 4

1

看起来问题的原因是 ACP 将complete选项设置为.,w,b,k(参见 autocomplpop/plugin/acp.vim 中的第 125 行),

call l9#defineVariableDefault('g:acp_completeOption', '.,w,b,k')

而按下时使用的默认值\<C-n>.,w,b,u,t,i。看起来最后一个字母i实际上有所不同:出于某种原因,vim不会使用在缓冲区中打开的包含文件中的单词来完成另一个缓冲区中的单词。所以,b选项是不够的,i还必须包括在内。将以下行添加到我的 .vimrc 帮助

let g:acp_completeOption = '.,w,b,u,t,i'

至少它适用于 C++ 文件,但我不确定它是否能解决 Ruby 脚本的问题。

于 2016-11-10T12:44:43.820 回答
0

哦,酷,这个插件看起来很像neocomplcache,但可能更干净......看起来有点旧。很少有人担心那个项目有这么多未结的票,而且两年内没有更新。

无论如何,根据文档,它并没有……真的……说。很可能是以下情况之一:

  • 你的pwd. 如果您的源代码的根目录是,some/path那么它也应该是您当前的工作目录。尝试输入:cd some/path以查看是否有所作为。
  • 运行时路径rtp。看看添加带有源文件的目录是否可以解决&rtp问题。
  • path。_ 与设置相同的交易&rtp

这个插件很可能只是依赖与 vim 捆绑的内置 ruby​​ 全能补全功能。试试help ft-ruby-omni

于 2013-02-12T04:35:34.983 回答
0

根据光标左侧的内容,ACP(与所有替代方案一样)决定使用哪种完成机制。

但是 ACP 只使用 Vim 的默认补全机制:如果<C-x><C-o><C-n>/<C-p>不提供您要查找的内容,ACP 将无济于事。先试试看。

于 2013-02-12T08:13:57.267 回答
0

我只是遇到了同样的问题,实际上我找到了解决方案。显然,您必须在.vimrc文件中设置以下内容:

let g:acp_behaviorKeywordCommand = "\<C-x>\<C-i>"

这将使 acp 在您的源包含的每个文件中查找完成,就好像您实际上正在键入<C-p>. 但是,它很慢,在尝试后我决定在<C-p>没有匹配项和其他情况下的默认行为时恢复使用。

于 2013-05-05T14:07:25.313 回答