是否可以使用 jedi-vim 插入导入语句?

Is it possible to insert import statements with jedi-vim?

我刚刚开始研究 Vim jedi 插件,它似乎令人印象深刻。我使用的一些 Java IDE 的一个功能是能够自动添加所需的导入。绝地能做到吗?例如,如果我输入一行

arg1 = sys.argv[1]

然后调用一些 Jedi 命令,插件是否可以在源文件顶部自动插入 import sys 行(如果尚未导入 sys)?

我已经查看了 Jedi 帮助,但看不到类似的内容 - 但我可能遗漏了一些内容。或者,是否有另一个 Vim 插件可以做到这一点? (它需要对 Python 语法有一定程度的理解才能正确使用,这就是为什么我希望 Jedi 能够做到这一点)。

目前 Jedi 不进行重构。这包括进口增加。整个主题有一个问题:https://github.com/davidhalter/jedi/issues/667.

这个命令要实现好性能可不是那么容易的。但是,任何帮助表示赞赏。 :)

仅供参考,我定义了一个通用导入功能,可以在 lh-dev. I use it from my C&C++ suite, and from my snippet engine (mu-template) 中按需使用。

到目前为止,我没有解析任何内容来添加缺少的 import/include 语句。正如 Dave 所说,这部分会很复杂。相反,我的代码片段知道哪些文件需要 imported/included 和 import/include 如果还没有 imported/included.

它远非完美,但它是一个开始。 mu-template 提供了一个挂钩,可以在代码段展开后在文件开头执行操作,这是我调用 lh-dev 函数的地方。如果其他代码段引擎提供类似的挂钩,您应该能够从您的代码段中调用 lh#dev#import#add()

这里是 Python 的概念证明片段(我很少在 Python 中编程,也没有很多片段):https://github.com/LucHermitte/mu-template/blob/master/after/template/python/path-exists.template