自动生成Python导入语句的Vim插件(不使用Rope)

myss37ts  于 2022-11-11  发布在  Python
关注(0)|答案(3)|浏览(156)

herehere之前,我见过类似的问题,但是它们已经存在4年了,没有得到符合我要求的答案。
如果我在Vim中输入Python代码,例如:

os.path.join('my', 'path')
resp = requests.get('http://example.com')
HttpResponse('success')

假设我的site-packages文件夹中有第三方模块'requests'和'django',是否有Vim插件--它不使用Rope库--可以自动将相关的import语句添加到Python文件中(对于内置模块和第三方模块,根据需要使用importfrom),如下所示:

import os
import requests
from django.http import HttpResponse

虽然我传统上会使用古老的Rope包,但我一直在用现代的替代品替换Rope函数,以避免.ropeproject文件夹的开销。然而,我还没有找到一个Vim替代品来自动导入。

dtcbnfnu

dtcbnfnu1#

我正在使用python-imports.vim(https://github.com/mgedmin/python-imports.vim)。合并gutentags插件,它几乎是完美的。完美的解决方案将创建所有的导入,并神奇地猜测正确的模块,以防名称冲突,但我怀疑这是可能的。
2022年5月14日更新:另一种方法是使用Ale(https://github.com/dense-analysis/ale)与pyright(https://github.com/microsoft/pyright)和:ALEImport命令。

x7rlezfr

x7rlezfr2#

看一看vimpy。从它的描述来看,它做了你想要的。
请注意,它需要pyflakes

9rbhqvlz

9rbhqvlz3#

很晚才到党但既然这个问题存在,我不妨张贴一个新的答案。
我使用coc-python来处理这种性质的所有事情。
它就像魔术一样:

唯一需要注意的是,您必须按Ctrl-y才能接受自动导入建议。
确保在插入模式下没有将Ctrl-yMap到任何其他内容(例如,一个名为 emmet 的通用插件会重新Map这种组合)。

相关问题