使AutoComplPop搜索整个项目(或打开缓冲区)?

时间:2013-02-12 02:06:14

标签: vim

我开始使用AutoComplPop进行自动代码完成。它在我正在编辑的单个文件上运行良好,但是如果file1正在引用file2中定义的方法,则它找不到它。

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

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

4 个答案:

答案 0 :(得分:1)

看起来问题的原因是ACP将complete option的目的设置为.,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脚本的问题。

答案 1 :(得分:0)

哦,很酷,这个插件看起来很像neocomplcache但也许更干净......看起来有点旧。很少有人担心该项目有很多开放票,两年内没有更新。

无论如何,根据the documentation它不......真的......说。很可能是以下之一:

  • 您的pwd。如果源的根目录是some/path,那么它也应该是您当前的工作目录。尝试输入:cd some/path,看看是否有所作为。
  • 运行时路径rtp。看看是否将包含源文件的目录添加到&rtp就可以了。
  • path。与&rtp设置相同的交易。

这个插件很可能只是依赖于与vim捆绑在一起的内置ruby omni完成功能。试试help ft-ruby-omni

答案 2 :(得分:0)

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

但ACP仅使用Vim的默认完成机制:如果<C-x><C-o><C-n> / <C-p>未提供您要查找的内容,则ACP将无法提供帮助。先试试吧。

答案 3 :(得分:0)

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

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

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