Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VIM-未知函数:pythoncompleteComplete_Python_Vim_Omnicomplete - Fatal编程技术网

VIM-未知函数:pythoncompleteComplete

VIM-未知函数:pythoncompleteComplete,python,vim,omnicomplete,Python,Vim,Omnicomplete,在.py文件中键入以下代码时: import numpy numpy. 然后按下触发Omnicompletion的TAB键,我得到以下错误: Error: Required vim compiled with +python E117: Unknown function: pythoncomplete#Complete 但是,当我键入vim-version | grep python时,我得到: 有人能解释这种行为吗?或者有人有什么想法去挖掘?在stackoverflow上也有类似的问题,但

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

import numpy
numpy.
然后按下触发Omnicompletion的TAB键,我得到以下错误:

Error: Required vim compiled with +python
E117: Unknown function: pythoncomplete#Complete
但是,当我键入vim-version | grep python时,我得到:


有人能解释这种行为吗?或者有人有什么想法去挖掘?在stackoverflow上也有类似的问题,但在这种情况下,VIM是在不支持python的情况下编译的。

请使用

:echo has('python')

这可能是因为,即使您的Vim是用Python编译的,Python解释器的动态加载也会失败,这通常是因为找不到相应的共享库。您可以在Compilation:

下的:version输出中找到它的名称。显然,您的vim是在python3/dyn和python/dyn两个python版本的动态支持下编译的。在此设置中,您应该记住一件事: 命令中有“python”和“python3”已经专门调用了这个特定python版本的用法。 显然,YCM在调用“python3”之前先调用“python”,这样python3在vim会话的其余部分变为活动状态,而python2变为非活动状态。pythoncompleteComplete只对python2起作用。 因此,您可以通过在vimrc的最顶端显式调用python2来修复pythoncompleteComplete:

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\u版本检查python版本,如果您不需要,则作业中已经有命令。

您可能需要python2和pytho3,就像我的情况一样

让g:python3\u host\u prog='C:/Bin/Miniconda3/python.exe' 让g:python\u host\u prog='C:/Bin/miniconda2/python.exe'

:在我执行此操作之前,echo已将“python”返回0。 在我的案例中需要YCM、ensime和neoterm
直接从neoterm站点windows下载显然对于这种情况来说

:echo的'python'返回值为1,因此这似乎不是一个有趣的问题;这正是autoload/pythoncomplete.vim中的检查,根据您的错误,这里似乎返回0。在我的问题和我的评论之间,我安装了YouCompleteMe。我刚刚发现,当删除YouCompleteMe时,has'python'返回零;当再次添加YouCompleteMe时,has'python'再次返回一。另外,在安装YCM后,我可以输入:call pythoncompleteComplete,不再获得未知函数错误,相反,我没有足够的参数,并且我可以通过键入Ctrl+x和Ctrl+o成功完成OmniComplete,因为YCM现在正在使用TAB。尝试使用VimCompletesMe插件设置本地omnifunc=python3completeComplete。
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