Sublime Text原生仅支持当前文件单词前缀匹配,无法实现函数签名、类型推导或import感知的智能补全;必须通过LSP插件桥接本地语言服务器(如pylsp、pyright)才能获得语义级提示,且需确保右下角语法正确、auto_complete_commit_on_tab启用及服务器命令路径配置无误。

Sublime Text 原生不提供函数签名、类型推导或 import 感知的智能补全,所谓“代码补全”默认只是当前文件里出现过的单词前缀匹配——os. 后按 Ctrl+Space 不出 listdir,不是设置没开,是根本没这个能力。要获得真正语义级提示,必须走 LSP 路线;其他路径(如 SublimeJEDI、AutoComplPop)要么已停更,要么覆盖场景极窄,且在 Sublime Text 4 + Python 3.11/TS 5.x 环境下大概率静默失效。
为什么装了插件但 Ctrl+Space 没反应或只提示变量名
这不是插件没生效,而是语言服务器压根没连上。LSP 插件本身不干活,它只转发请求;真正解析语法、返回补全项的是你本地装的 pylsp、typescript-language-server 这类命令行程序。
- 终端执行
pylsp --version或typescript-language-server --version,无输出 → 服务器根本没装好 -
LSP.sublime-settings中"command"必须是完整可执行路径(如["/opt/homebrew/bin/pylsp"]),不能只写["pylsp"](除非确认该命令在系统PATH里) - 右下角显示
Plain Text而非Python或JavaScript→ 文件未被识别为对应语言,LSP 客户端甚至不会启动 - Python 项目缺少
pyproject.toml或setup.py,pylsp可能无法解析本地模块路径,from mypkg import foo后foo.无提示
LSP 配置后 os. 还不出提示?检查这几个关键点
即使 LSP 插件和服务器都装了,补全仍可能静默失效。断点常在语言服务器自身的运行条件,而非 Sublime 设置里。
- Python 用户:必须装
python-lsp-server[all](带[all]才含 jedi 后端),不是裸装python-lsp-server - JavaScript/TypeScript:项目根目录必须有
jsconfig.json或tsconfig.json,否则typescript-language-server退化为纯文本匹配 - 触发时机:LSP 默认不自动弹出补全框,
os.后需手动按Ctrl+Space;如需输入.后立刻弹窗,得在用户设置里加:"auto_complete_triggers": [{"selector":"source.python","characters":"."}] - 补全项为空?打开 Sublime 控制台(
Ctrl+`),看是否有LSP: pylsp failed to start类报错,这类错误常因 Python 解释器路径配置错误导致
.sublime-completions 文件能补什么?别指望它做智能提示
.sublime-completions 是纯静态文本替换机制,适合补固定模板(如 log → console.log($1);$0),完全不感知作用域、不查 self、不读 import、不支持条件判断。
- 文件必须放在
Packages/User/目录下,格式为 JSON,顶层是completions数组 - 每个条目含
"trigger"(触发文本)和"contents"(插入内容),支持$1、$0占位符 - 它和“智能提示”毫无关系——
requests.get的参数列表、str.split的文档注释,它一个都给不了 - 前端 HTML/CSS 补全靠
Emmet和CSS3插件,不是 LSP;Tailwind 提示靠Tailwind CSS IntelliSense,也不是靠手写.sublime-completions
真正卡住人的从来不是“怎么装”,而是语言服务器是否就绪、scope 是否匹配、auto_complete_commit_on_tab 是否开启这三件事。漏掉任何一个,补全就永远停留在“只认你打过的词”这一层。

















