选项卡完成时未检测到Jedi Vim Python子类
本期发行的是Arch(1)和Debian Jessie(2),其中: 一,选项卡完成时未检测到Jedi Vim Python子类,python,linux,vim,tab-completion,jedi-vim,Python,Linux,Vim,Tab Completion,Jedi Vim,本期发行的是Arch(1)和Debian Jessie(2),其中: 一, Debian Jessie没有PYTHONPATH套装 我的vim是用python编译的 :python import sys; print(sys.version) 2.7.10 (default, May 26 2015, 04:16:29) [GCC 5.1.0] 我尝试了以下Arch Linux软件包: > pacman -S python2-jedi vim-jedi 完成对类有效,但对子类无效 im
:python import sys; print(sys.version)
2.7.10 (default, May 26 2015, 04:16:29)
[GCC 5.1.0]
我尝试了以下Arch Linux软件包:
> pacman -S python2-jedi vim-jedi
完成对类有效,但对子类无效
import os # os is built-in library.
os. # ycm does not complete members of this class.
我删除了它们并下载了git包
> cd ~/.vim/bundle/jedi-vim/jedi/test/ && ./run.py
Summary: (0 fails of 962 tests) in 18.819s
> cd ../ && ./setup build && ./setup install
同样,补全对类有效,但对子类无效
import os # os is built-in library.
os. # ycm does not complete members of this class.
我上一个问题把我从送到绝地维姆,我刚刚意识到我犯了一个错误,因为我不理解。我试图通过以下方式导入: 当我使用ipython和tab补全时,这是很自然的,如下所示: 这是在python脚本中导入模块的错误方法。这是正确的方法: 最后,绝地Vim插件可以完美工作。如果存在与不可用导入相关的不确定性,您可以通过以下方式验证导入:
:python import sys; print(sys.path)
然后在运行时添加丢失的目录,以测试它们的缺失是否是导致问题的原因
:python import sys; sys.path.append("/path/to/dir")
在我的例子中,os.py位于/usr/lib/python2.7/
我希望这能为未来的绝地Vim用户澄清这一点。这是一个老问题,但如果您使用虚拟环境,我找到了一个替代方法来修改
sys.path
您可以在/lib//site packages
文件夹中创建一个指向源代码根的.pth
()文件,例如,如果我的源代码位于/user/123/python proj/source
文件夹中,而我的虚拟环境位于/user/123/python proj/venv
文件夹中
echo '/user/123/python-proj/source > /user/123/python-proj/venv/lib/python3.5/site-packages/my-source.pth'
确保您首先激活虚拟环境,然后启动vim,jedi应该能够找到您的代码。您能提供一次完成后的
:mes
,:scriptnames
,:set omnifunc
?顺便说一句:绝地维姆和YCM都在使用机罩下的绝地。谢谢你的时间。是的,我知道绝地维姆和YCM都依赖绝地。我在这两个网站上都发布了帖子,以提高知名度。这是奇怪的输出,我的:scriptnames
还有很多绝地维姆的东西在加载,其中绝地维姆/autoload/jedi.vim
,肯定在那里。我想它在14:。而且,在一次完成之后,我有一个不同的输出。看看我新输出的14,25,26,28,31。这两个输出都来自Debian Jessie。@DaveHalter我刚刚意识到这是由于我的不理解。检查下面我的答案!