我刚刚开始关注Vim jedi插件,看起来非常令人印象深刻。我使用的一些Java IDE的一个特性是能够自动添加所需的导入。绝地能做到吗?例如,如果我输入一行,例如
arg1 = sys.argv[1]
然后调用一些Jedi命令,插件是否可以在源文件的顶部自动插入import sys
行(如果sys尚未导入)?
我已经查看了绝地帮助,但看不到这样的事情 - 但我可能错过了一些东西。或者,是否有另一个Vim插件可以做到这一点? (它需要对Python语法有一定程度的理解才能使其正确,这就是为什么我希望Jedi能够做到这一点。)
答案 0 :(得分:1)
目前绝地并没有进行重构。这包括导入添加。整个主题都存在问题:https://github.com/davidhalter/jedi/issues/667。
以良好的性能实现此命令并不容易。但是,任何帮助表示赞赏。 :)
答案 1 :(得分:0)
FIY,我已经定义了一个可以在lh-dev中按需使用的通用导入功能。我在我的C& C ++套件和我的snippet engine (mu-template)中使用它。
到目前为止,我没有解析任何添加缺少的import / include语句的内容。戴夫说,这部分很复杂。相反,我的代码片段知道哪些文件需要导入/包含,如果尚未导入/包含,则导入/包含它们。
它远非完美,但它是一个开始。 mu-template提供了一个钩子,在片段扩展后在文件的开头做一些东西,这就是我称之为lh-dev函数的地方。如果其他代码段引擎提供类似的挂钩,您应该可以从您的代码段中调用lh#dev#import#add()
。
这里是Python的概念证明片段(我很少在Python中编程,并且没有很多片段):https://github.com/LucHermitte/mu-template/blob/master/after/template/python/path-exists.template