ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

Jedi - Python 自动补全

作者:srusskih ALL 热门

SublimeText 中的出色 Python 自动补全工具

详细信息

  • 0.20.0
    0.11.2
  • github.com
  • github.com
  • 2 年前
  • 48 分钟前
  • 11 年前

安装次数

  • 总计 220K
  • Win 110K
  • Mac 49K
  • Linux 61K
8 月 6 日 8 月 5 日 8 月 4 日 8 月 3 日 8 月 2 日 8 月 1 日 7 月 31 日 7 月 30 日 7 月 29 日 7 月 28 日 7 月 27 日 7 月 26 日 7 月 25 日 7 月 24 日 7 月 23 日 7 月 22 日 7 月 21 日 7 月 20 日 7 月 19 日 7 月 18 日 7 月 17 日 7 月 16 日 7 月 15 日 7 月 14 日 7 月 13 日 7 月 12 日 7 月 11 日 7 月 10 日 7 月 9 日 7 月 8 日 7 月 7 日 7 月 6 日 7 月 5 日 7 月 4 日 7 月 3 日 7 月 2 日 7 月 1 日 6 月 30 日 6 月 29 日 6 月 28 日 6 月 27 日 6 月 26 日 6 月 25 日 6 月 24 日 6 月 23 日 6 月 22 日
Windows 14 9 14 9 6 11 17 9 21 3 12 5 9 12 12 19 5 8 13 14 8 9 15 12 10 8 16 11 14 11 9 7 18 16 13 13 10 15 7 12 12 8 15 3 8 13
Mac 1 3 1 2 1 1 2 2 2 2 1 1 3 4 5 3 1 0 1 0 2 4 7 4 0 3 2 1 4 0 2 3 6 7 2 2 1 4 1 4 6 2 2 2 2 3
Linux 13 6 8 2 6 4 5 5 4 6 5 6 3 8 6 5 5 4 5 3 5 1 4 3 4 10 4 7 8 9 7 2 3 2 4 2 5 3 3 6 3 7 7 7 2 4

README

源代码
raw.githubusercontent.com

SublimeJEDI

Gitter

SublimeJEDI 是一个为 Sublime Text 3Sublime Text 2 以及出色的自动补全库 Jedi 提供的插件

支持的 Python 版本

Sublime Jedi 插件 分支 Jedi 版本 Python 2.6.x Python 2.7.x Python >3.3 Python 3.3 Sublime Text 2 Sublime Text 3
>= 0.14.0 master >=0.13.2
>= 0.12.0 master >=0.12.0
< 0.12.0 st2 0.11.1

请注意,Jedi 不再支持 Python 3.3。

安装

使用 Git

cd ~/.config/sublime-text-2/Packages/
git clone https://github.com/srusskih/SublimeJEDI.git "Jedi - Python autocompletion"

使用 Sublime Package Control

  1. 打开命令面板(默认:ctrl+shift+p
  2. 键入 package control install 并选择命令 Package Control:安装包
  3. 键入 Jedi 并选择 Jedi - Python 自动补全

有关使用 Sublime Package Control 的更多信息,请参阅此处: http://wbond.net/sublime_packages/package_control/usage.

设置

Python 解释器设置

默认情况下,SublimeJEDI 将使用系统环境变量 PATH 中的默认 Python 解释器。您还可以为每个 Sublime 项目设置不同的解释器。

要设置与项目相关的 Python 解释器,您必须编辑您的项目设置文件。默认文件名看起来类似于 <project name>.sublime-project

您可以使用以下示例设置 Python 解释器和附加的 Python 包目录,例如

# <project name>.sublime-project
{
    // ...

    "settings": {
        // ...
        "python_virtualenv": "$project_path/../../virtual/",
        "python_interpreter": "$project_path/../../virtual/bin/python",

        "python_package_paths": [
            "$home/.buildout/eggs",
            "$project_path/addons"
        ]
    }
}

注意:您可以同时配置 python_interpreterpython_virtualen,没有问题。如果您单独配置 python_interpreter,则 python_virtualen 将被推断出来,因此它将在 python_interpreter 的两个目录之上。如果您单独配置 python_virtualen,则 python_interpreter 将始终在 python_virtualen 加上 'bin/python' 的位置。如果您不配置这些,则将使用系统的默认 Python 环境。

注意:请注意,Python 将从 "python_package_paths" 目录遍历以搜索模块和文件。换句话说,"python_package_paths" 列表中的每个项目都是一个包含额外包和模块的目录,而不是直接指向包或模块的路径。

在设置路径时,Sublime Text Build System Variables 和 OS 环境变量将自动展开。请注意,不支持使用占位符和替换,就像在常规 Sublime Text Build System 路径中那样。

SublimeREPL集成

默认情况下,SublimeREPL 的自动补全功能已关闭。如果您想在 repl 中使用 SublimeJEDI 的自动补全功能,请在 User/sublime_jedi.sublime-setting 或项目设置中设置 enable_in_sublime_repl: true

在点上进行自动补全

如果您想在点上进行自动补全,可以在 Sublime User 或 Python 首选项中定义触发器。

# User/Preferences.sublime-settings or User/Python.sublime-settings
{
    // ...
    "auto_complete_triggers": [{"selector": "source.python", "characters": "."}],
}

如果您想在强置仅点上进行自动补全而不在输入时,可以设置(除了上面的触发器外)

# User/Preferences.sublime-settings or User/Python.sublime-settings
{
    // ...
    "auto_complete_selector": "-",
}

在指定字符后才进行自动补全

如果您想_only_在指定的字符后进行 Jedi 自动补全,可以使用 only_complete_after_regex 设置。

例如,如果您只想在点 . 字符之后进行 Jedi 自动补全,但不想影响其他包的自动补全,请在 User/sublime_jedi.sublime-settings 中插入以下内容

{
  "only_complete_after_regex": "\\.",
}

以这种方式使用此设置意味着您可以从 User/Python.sublime-settings 中删除 "auto_complete_selector": "-",,这样其他包仍然在每次按键后触发自动补全。

转到/转到定义

查找函数/变量/类定义

快捷键:CTRL+SHIFT+G

鼠标绑定,已禁用,因为难以保持 ST 默认行为。现在您可以这样使用 CTRL + 左鼠标按钮 自行绑定

# User/Default.sublime-mousemap
[{
    "modifiers": ["ctrl"], "button": "button1",
    "command": "sublime_jedi_goto",
    "press_command": "drag_select"
}]

注意:您可以通过更改 follow_imports 设置来配置此命令的行为。如果此设置为 True(默认行为),您将直接跳转到术语定义或声明的地方。如果想要逐步回溯术语的导入路径,请将此设置为 False

查找相关名称(“查找用法”)

查找函数/方法/变量/类用法和定义。

快捷键:ALT+SHIFT+F

有两个设置与查找用法相关

  • highlight_usages_on_select:当选择符号时突出显示文件中的符号用法(默认 false
  • highlight_usages_color:突出显示符号的颜色(默认 "region.bluish"
    • 其他可用选项包括 "region.redish", "region.orangish", "region.yellowish", "region.greenish", "region.bluish", "region.purplish", "region.pinkish", "region.blackish"
    • 这些颜色实际上是 Sublime Text 大约为构建 3148 添加的范围;这些范围没有文档记录,但 BracketHighlighter 插件在这里有非常好的解释 这里

显示 Python 文档字符串

将文档字符串显示为工具提示。

对于 ST2:在输出面板中显示文档字符串。

快捷键:CTRL+ALT+D

风格化 Python 文档字符串

如果可用,则使用 mdpopups 来显示文档字符串工具提示。要修改样式,请参阅 mdpopups 的 样式指南

基本上需要一个Packages/User/mdpopups.css文件来定义您的自定义样式。

要指定仅适用于Jedi工具提示的规则,请使用以下示例中显示的.jedi选择器。

/* JEDI's python function signature */
.jedi .highlight {
    font-size: 1.1rem;
}

/* JEDI's docstring titles

  h6 is used to highlight special keywords in the docstring such as

  Args:
  Return:
*/
.jedi h6 {
    font-weight: bold;
}

mdpopups提供了一个default.css文件,它可以用作cheatsheet来了解可用样式。

Jedi Show Calltip

在状态栏显示calltip。

公开命令是sublime_jedi_signature

函数参数在完成时填充

SublimeJEDI允许通过默认设置填充函数参数。感谢@krya,现在您可以关闭它。

函数参数完成有3种不同的行为

  • 在自动完成时插入所有函数参数

    # complete result
    func(a, b, c, d=True, e=1, f=None)
    
    # sublime_jedi.sublime-settings
    {
        "auto_complete_function_params": "all"
    }
    
  • 仅插入没有默认值的必需参数(默认行为)

    # complete result
    func(a, b, c)
    
    # sublime_jedi.sublime-settings
    {
        "auto_complete_function_params": "required"
    }
    
  • 不插入任何参数

    # complete result
    func()
    
    # sublime_jedi.sublime-settings
    {
        "auto_complete_function_params": ""
    }
    

有关auto_complete_function_params的更多信息

完成可见性

Sublime Text的完成行为有些奇怪,有时不会添加它自己的完成建议。启用此选项以尝试提供更舒适的作流程。

  • 仅建议Jedi完成

    # sublime_jedi.sublime-settings
    {
        "sublime_completions_visibility": "jedi"
    }
    

# sublime_jedi.sublime-settings
    {
        "sublime_completions_visibility": "default"
    }
  • 在列表末尾建议Jedi完成和Sublime完成

    # sublime_jedi.sublime-settings
    {
        "sublime_completions_visibility": "list"
    }
    

请注意,如果您正在使用SublimeAllAutocomplete,则不需要关注此选项。

日志记录

插件使用Python日志库记录一切。它允许按正确的顺序收集正确的信息,而不是将print()结果打印到Sublime控制台。要使日志记录更有用,我建议使用ST插件Logging Control,它允许将日志流式传输到文件/控制台等。在GitHub页面上,您可以找到有关如何使用它的优秀文档。

以下是我用于DEBUG目的的quickstart配置

{
    "logging_enable_on_startup": false,
    "logging_use_basicConfig": false,
    "logging_root_level": "DEBUG",
    "logging_console_enabled": true,
    "logging_console_level": "INFO",     // Only print warning log messages in the console.
    "logging_file_enabled": true,
    "logging_file_level": "DEBUG",
    "logging_file_datefmt": null,
    "logging_file_fmt": "%(asctime)s %(levelname)-6s - %(name)s:%(lineno)s - %(funcName)s() - %(message)s",
    "logging_file_path": "/tmp/sublime_output.log",
    "logging_file_rotating": false,
    "logging_file_clear_on_reset": false
}

默认情况下,详细的(调试)日志记录已关闭,您将不会在ST控制台中看到任何消息,而只有异常。

如果您需要获取有关插件问题的更多信息

  1. 安装Logging Control
  2. 使用上面提供的quickstart配置。
  3. 启用日志记录。调用“命令面板”(mac的CMD+SHIFT+P)并开始键入“Logging”。选择"Logging: Enable logging"命令以启用日志记录。
  4. 重现问题。
  5. 检查日志文件!

故障排除

import XXXX的自动完成不起作用。

这是ST3的共同问题。所有与语言相关的设置都存储在Python包中。有一个Completion Rules.tmPreferences文件,其中定义了在关键字(def,class,import等)之后应取消完成。

要解决这个问题,Sublime Jedi插件已经有了ST2的适当Completion Rules.tmPreferences文件,但ST3忽略了它。

一些更新完成规则和修复问题的解决方案

复制粘贴
  1. 删除Sublime Text缓存文件Cache/Python/Completion Rules.tmPreferences.cache
  2. Completion Rules.tmPreferences.cache下载到User/Packages/Python/
有一个为此的软件包…
  1. 安装包https://packagecontrol.sublime.net.cn/packages/PackageResourceViewer
  2. cmd+shift+p(命令面板)
  3. 输入PackageResourceViewer: Open Resource
  4. 输入python并选择Python包
  5. 输入Completion Rules.tmPreferences
  6. 将正则表达式中的import删除。
  7. 保存

许可

MIT