Jedi - Python 自动补全
SublimeText 中的出色 Python 自动补全工具
详细信息
安装次数
- 总计 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
SublimeJEDI
SublimeJEDI 是一个为 Sublime Text 3 和 Sublime 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
- 打开命令面板(默认:
ctrl+shift+p
) - 键入
package control install
并选择命令Package Control:安装包
- 键入
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_interpreter
和 python_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控制台中看到任何消息,而只有异常。
如果您需要获取有关插件问题的更多信息
- 安装Logging Control
- 使用上面提供的quickstart配置。
- 启用日志记录。调用“命令面板”(mac的CMD+SHIFT+P)并开始键入“Logging”。选择
"Logging: Enable logging"
命令以启用日志记录。 - 重现问题。
- 检查日志文件!
故障排除
import XXXX
的自动完成不起作用。
这是ST3的共同问题。所有与语言相关的设置都存储在Python包中。有一个Completion Rules.tmPreferences
文件,其中定义了在关键字(def,class,import等)之后应取消完成。
要解决这个问题,Sublime Jedi插件已经有了ST2的适当Completion Rules.tmPreferences
文件,但ST3忽略了它。
一些更新完成规则和修复问题的解决方案
复制粘贴
- 删除Sublime Text缓存文件
Cache/Python/Completion Rules.tmPreferences.cache
- 将Completion Rules.tmPreferences.cache下载到
User/Packages/Python/
有一个为此的软件包…
- 安装包https://packagecontrol.sublime.net.cn/packages/PackageResourceViewer
- cmd+shift+p(命令面板)
- 输入
PackageResourceViewer: Open Resource
- 输入
python
并选择Python包 - 输入
Completion Rules.tmPreferences
- 将正则表达式中的
import
删除。 - 保存