句点后Python的烦人的Sublime Text自动补全功能(`self`关键字)

R K*_*lev 4 python autocomplete sublimerepl sublimetext3

我正在使用sublime text 3进行python开发。输入时,我已启用自动补全功能。我希望,当我键入一个对象名称后跟一个句点时,将弹出一个对象的方法/属性列表。不会发生,所以我按Tab

import time
time.[TAB]
Run Code Online (Sandbox Code Playgroud)

现在发生了什么,简直是不可思议!.被替换self.,所以我最终得到

import time
timeself.
Run Code Online (Sandbox Code Playgroud)

我一直在寻找在所有的设置文件,我想包python completionscode intelcode complice,但他们没有禁止这种“特性”,这让我发疯!

最后,我找到了Jedi软件包,它为文本编辑器解决了此问题。但是我仍然在解释器窗口(package SublimeREPL)中遇到问题。顺便说一句,如果我同时安装Jedicode complice,则REPL中的自动补全似乎效果更好,但是它提供了一些无关紧要的废话,例如%%!%%HTML。是的,如果我按两次[TAB],我仍然会得到timeself.而不是time.

有人知道发生了什么吗?.-> self.行为来自何处?如何禁用%%!东西?

Mar*_*lén 6

我本人有这个问题,要找到它并不容易。

该问题不是由任何包装引起的。我在运行Sublime文本3的默认内置文件后才发现。虽然我极力推荐Anaconda(如MattDMo所述),但在安装Anaconda时也会出现此问题。

问题:

问题的原因是Sublime Text 3附带的默认Python代码段self.sublime-snippet如下所示:

<snippet>
    <content><![CDATA[self.]]></content>
    <tabTrigger>.</tabTrigger>
    <scope>source.python</scope>
    <description>self</description>
</snippet>
Run Code Online (Sandbox Code Playgroud)

在Sublime文本2中,可以简单地删除此文件,但是ST3中的默认代码段存储方式不同,因此无法轻松删除此文件。

解决方案:

此堆栈溢出答案说明了如何提取语言(在本例中为Python)的软件包信息。然后可以照常删除该代码段。

更新:

由于此问题,该代码段现在已从源代码中删除。可能包含在下一个更新中。资料来源:https : //github.com/sublimehq/Packages/issues/473

  • 非常感谢!我使用PackageResourceViewer来查找此片段,然后在片段的第二行中将`self.`替换为`.`。现在,自动补全功能会在Tab键上弹出,但不会插入烦人的“自我”一词! (2认同)