2013-02-12 44 views
1

我开始使用AutoComplPop来自动完成代码。它对我正在编辑的单个文件非常有用,但是如果file1对file2中定义的方法进行引用,它就不会找到它。使AutoComplPop搜索整个项目(或打开缓冲区)?

该文档没有指定是否有方法使其搜索整个项目目录,甚至只是所有打开的缓冲区,所以我不能说这是不是插件所做的事,或者如果我需要启用某些东西。

我测试了两个Ruby文件,如果这是相关的。谢谢!

回答

0

根据游标左侧的内容,ACP(与所有选项一样)决定使用哪种完成机制。

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

+0

当我做'C-n'时,我正在寻找的东西确实出现了。但是,它不是通过ACP出现的。想法? – Jonah 2013-02-12 08:17:54

+0

你在光标的左边是否有'.'或类似的操作符? – romainl 2013-02-12 08:27:12

+0

是的,我正在使用的示例是对对象的方法调用。 – Jonah 2013-02-12 09:38:55

0

很酷,这个插件看起来很像neocomplcache,但也许更干净...看起来有点旧。关于这个项目有很多开放门票,两年内没有更新,这一点很少。

无论如何,根据the documentation它不......真的......说。很有可能是以下其中一种情况:

  • 您的pwd。如果您的源的根目录是some/path那么这也应该是您当前的工作目录。尝试输入:cd some/path以查看是否有所作为。
  • 运行时路径rtp。看看是否用你的源文件添加目录到&rtp是否有用。
  • path。与&rtp设置相同。

很可能这个插件只是落在与vim捆绑在一起的ruby omni完成函数中。试试help ft-ruby-omni

0

我刚刚遇到同样的问题,实际上我找到了解决方案。 显然,你在你的.vimrc文件中设置如下:

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

这将使你的源完井包括每个文件ACP的样子,就好像你实际上打字<C-p>。然而,它很慢,在尝试之后,我决定在其他情况下没有匹配和默认行为时使用<C-p>进行还原。

0

看起来像该问题的原因是,ACP设置complete option其目的,以.,w,b,k(参见autocomplpop /插件/ 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脚本的情况。