我正在使用sublime text 3进行python开发。当我输入时,我打开了自动完成功能。我希望,当我键入一个对象名后跟一个句点时,会弹出一个对象的方法/属性列表。它没有发生,所以我按Tab
。
import time
time.[TAB]
现在发生的事情,绝对是奇怪的! .
替换为self.
,因此我最终会使用
import time
timeself.
我查看了所有设置文件,我尝试了包python completions
,code intel
和code complice
,但没有一个禁用此“功能”,这让我发疯了!
最后,我找到了Jedi
包,它解决了文本编辑器的这个问题。但是我仍然在解释器窗口(包SublimeREPL
)中遇到问题。顺便说一句,如果我同时安装Jedi
和code complice
,则REPL中的自动完成似乎效果更好,但它会提供一些不相关的废话,例如%%!
或%%HTML
。是的,如果我按[TAB]两次,我仍然会以timeself.
而不是time.
结束!
有谁知道发生了什么事?这个.
- > self.
行为来自何方?如何禁用%%!
内容?
答案 0 :(得分:5)
我自己遇到了这个问题,追踪并不容易。
问题不是由任何包引起的。我在运行默认构建的Sublime文本3后发现了。虽然我强烈推荐使用Anaconda(如MattDMo所述),但安装Anaconda时也会出现问题。
问题:
问题的原因是Sublime Text 3附带的名为self.sublime-snippet
的默认Python代码段,如下所示:
<snippet>
<content><![CDATA[self.]]></content>
<tabTrigger>.</tabTrigger>
<scope>source.python</scope>
<description>self</description>
</snippet>
在Sublime文本2中,可以简单地删除此文件,但ST3中的默认代码段不会以相同的方式存储,因此无法轻松删除此文件。
解决方案:
This stack overflow answer解释了如何提取语言的包信息,在本例中为Python。然后可以正常删除该代码段。
<强>更新强>
由于此问题,现在已在源代码中删除了代码段。可能包含在下一次更新中。资料来源:https://github.com/sublimehq/Packages/issues/473
答案 1 :(得分:3)
我强烈建议您删除其他完成包并安装https://plnkr.co/edit/S8DJpHFVNFioklTl1xg6?p=preview(与Anaconda Python发行版无关)。我已经使用它几年了,我非常喜欢它。基本上,您只需要设置它就可以在Anaconda的设置或Anaconda
的设置中为"python_interpreter"
提供路径,它只是有效。不要永远索引像SublimeCodeIntel这样的所有东西,如果你不想要,也不需要设置一个单独的linter,因为内置了几个linters。 Virtualenvs是无缝的。 Anaconda将看到"python_interpreter"
指定的Python版本可用的所有模块,因此您无需担心通过设置向环境添加额外路径。确保将所有默认设置文件复制到用户设置文件中,然后根据需要更改选项。特定于项目的设置会覆盖用户设置,因此您可以通过编辑项目来进行更多自定义。