当我在.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支持的情况下编译的。
答案 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站点下载(显然是这种情况下的窗口)