必须在用户设置中添加"auto_complete_triggers": [{"selector":"source.python","characters":"."}],selector须严格为source.python,修改后需切换tab或执行reload snippets刷新。

Sublime Text 原生不识别语法结构,写 os. 后默认不会弹出补全——必须靠 auto_complete_triggers 显式声明触发条件,否则光标停着,啥也不出来。
怎么让 . 触发 Python 补全
Sublime 默认只在空格、换行或标点后扫描单词,不会监听 .。要让它响应点号,必须在用户设置中加一条明确规则:
-
selector必须写成source.python(不是text.python或python),大小写和前缀都不能错 -
characters填".",注意是字符串,不是正则或通配符 - 多个语言就追加对象,比如加 JS 支持:
{"selector": "source.js", "characters": "."} - 改完不用重启,但已打开的
.py文件要切一次 tab 再切回来,或按Ctrl+Shift+P→ 输入Reload Snippets刷新
为什么补全没反应?常见失效原因
补全“看起来开了但不工作”,大概率是这几个地方卡住了:
- 右下角显示
Plain Text:所有语言相关补全(包括插件)都会静默失效,必须点它切换回Python或对应语法 -
auto_complete_selector被设窄了:比如只写了"source",但某些文件类型 scope 是source.python.embedded,就得改成"source, text"或更宽泛的匹配 - 插件冲突:
Vintage(vi 模式)或旧版Emmet会劫持输入事件,临时禁用它们测试是否恢复 - scope 不匹配:用
Ctrl+Shift+P→Developer: Show Scope Name看当前光标位置的实际 scope,再比对auto_complete_triggers里的selector
自定义补全文件怎么写才生效
想补全 prn → print($1) 这类模板,得手写 .sublime-completions 文件:
- 必须放在
Packages/User/目录下(用Preferences → Browse Packages…快速打开) - 文件名必须以
.sublime-completions结尾,比如python-custom.sublime-completions -
scope字段决定触发上下文,比如source.python;写错 scope 就完全不触发 -
trigger和contents支持$1、$0占位符跳转,但不能用${1:default}这类 Sublime Text 不支持的格式 - JSON 必须严格合法:末尾不能多逗号,字符串必须双引号,否则整个文件被忽略
要不要装 LSP?Python 补全绕不开它
原生补全只做单词匹配,import requests 后输 requests. 依然看不到方法列表——这不是配置问题,是能力边界。
- 别碰
SublimeCodeIntel:已多年未维护,对 Python 3.11+ 和现代类型注解(如Self、LiteralString)基本无响应,还常卡死 - 必须走
LSP+LSP-pyright或LSP-pylsp:先装LSP插件,再pip install pyright或python-lsp-server[all] - 补全不会秒出:等右下角出现
LSP-pyright active提示(通常 2–5 秒),说明语言服务器已加载完成,此时才开始真正语义补全 - 路径配置容易漏:确认
LSP.sublime-settings中"command"指向的pyright可执行文件存在且有执行权限
最常被忽略的其实是 scope 和右下角语法标识——补全逻辑全部依赖这两者,而不是“我设置了 auto_complete 就该动”。











