VIM - 未知功能:pythoncomplete#完成

时间:2015-01-20 11:00:29

标签: python vim omnicomplete

当我在.py文件中键入以下代码时:

import numpy
numpy.

然后按下触发Omnicompletion的TAB键,我收到以下错误:

Error: Required vim compiled with +python
E117: Unknown function: pythoncomplete#Complete

但是,当我输入vim --version | grep python时,我得到:

+cryptv          +linebreak       +python/dyn      +viminfo
+cscope          +lispindent      +python3/dyn     +vreplace

有人可以解释这种行为,或者有人有任何想法在哪里挖掘?在stackoverflow上有一个类似的问题,但在这种情况下,VIM是在没有python支持的情况下编译的。

3 个答案:

答案 0 :(得分:2)

使用

从Vim中再次检查
:echo has('python')

即使您的Vim已经使用Python编译,但是Python解释器的动态加载失败,通常是因为无法找到相应的共享库。您可以在:version

下的Compilation:输出中找到其名称

答案 1 :(得分:2)

显然,你的vim是为两个python版本(python3 / dyn和python / dyn)的动态支持编译的。在此设置中您应该记住一件事: 命令has('python')has('python3')已经调用了这个特定python版本完全的用法。 显然,YCM在has('python')之前调用has('python3'),以便python3变为活动状态,而python2在vim-session的其余部分处于非活动状态。 pythoncomplete#Complete以某种方式只适用于python2。 所以你可以通过在vimrc的最顶层显式调用python2来修复pythoncomplete#Complete:

set nocompatible
if has('python') " if dynamic py|py3, this line already activates python2.                                                                                                                     
  let s:python_version = 2                                                                                                                                                                                         
elseif has('python3')                                                                                                                                                                                              
  let s:python_version = 3                                                                                                                                                                                         
else                                                                                                                                                                                                               
  let s:python_version = 0                                                                                                                                                                                         
endif
echomsg 'Using python'.s:python_version                                                                                                                                                                          

在你的vimrc的其余部分中,你可以检查带有s:python_version的python版本,如果你不需要它,has命令已经完成了工作。

答案 2 :(得分:0)

你可能需要python2和amp; 3在我的情况下

let g:python3_host_prog='C:/Bin/Miniconda3/python.exe' let g:python_host_prog='C:/Bin/miniconda2/python.exe'

:echo(' python')返回0,直到我这样做。 需要YCM& ensime&在我的情况下neoterm 直接从neoterm站点下载(显然是这种情况下的窗口)