Python 句号(`self` 关键字)后烦人的 sublime 文本自动完成

Annoying sublime text autocompletion for Python after period (`self` keyword)

我正在使用 sublime text 3 进行 python 开发。我在输入时打开了自动完成功能,这很有效。我希望,当我键入一个对象名称后跟一个句点时,会弹出一个对象列表 methods/attributes。它没有发生,所以我按 Tab.

import time
time.[TAB]

现在发生的事情,真是太奇怪了! .self. 取代,所以我最终得到

import time
timeself.

我查看了所有设置文件,我尝试了软件包 python completionscode intelcode complice,但其中 none 禁用了这个 "feature",这让我发疯!

最后,我找到了 Jedi 包,它解决了文本编辑器的这个问题。但是我在解释器window(包SublimeREPL)中仍然有问题。顺便说一句,如果我同时安装 Jedicode complice,REPL 中的自动完成功能似乎工作得更好,但它提供了一些不相关的废话,如 %%!%%HTML。是的,如果我按 [TAB] 两次,我仍然会得到 timeself. 而不是 time.!

有人知道这是怎么回事吗? . -> self. 行为从何而来?如何禁用 %%! 东西?

我强烈建议您摆脱其他完成包并安装 Anaconda (no relation to the Anaconda Python distribution). I've been using it for a couple of years now, and I absolutely love it. Basically all you need to do to set it up is provide a path for "python_interpreter" in Anaconda's settings or in your project 的设置,它就可以正常工作。无需像 SublimeCodeIntel 那样永远​​索引所有内容,如果您不想,也无需设置单独的 linter,因为内置了多个 linter。 Virtualenvs 是无缝的。 Anaconda 会看到 "python_interpreter" 指定的 Python 版本可用的所有模块,因此您无需担心通过设置向环境添加额外的路径。确保将所有默认设置文件复制到用户设置文件中,然后根据需要更改选项。特定于项目的设置会覆盖用户设置,因此您可以通过编辑项目来自定义更多内容。

顺便说一句,除了一两个小的拉取请求外,我与该项目没有任何关系,我只是一个非常满意的用户。

我自己也遇到过这个问题,不好追查。

问题不是由任何软件包引起的。我在 运行 默认构建 Sublime text 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>

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

解决方法:

解释了如何提取一种语言的包信息,在本例中为 Python。然后可以正常删除代码段。

更新:

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