Sublime Text原生无智能补全,仅支持前缀匹配;需通过LSP插件(如pylsp)实现函数签名、跨文件跳转等语义补全,sublime-completion仅适用固定模板。

Sublime Text 本身不带完整的智能补全(如函数签名、类型推导、跨文件跳转),所谓“自动补全”主要依赖 sublime-completion 文件、插件(如 AutoFileName、SublimeCodeIntel)和语言服务器(LSP)三类机制。原生补全只识别当前文件已出现过的词,几乎无上下文感知能力。
为什么 typing prin 不弹出 print()?
这是 Sublime 默认行为:它不做语法解析,只做“前缀匹配”+“历史词频排序”。print 要出现在当前文件或打开的其他标签页里,才会被收录进补全列表。
- 没写过
print,就不会提示;写了但拼错(如prnt),也不会触发修正 - Python 标准库函数、第三方包(如
requests.get)默认完全不可见 -
tab键仅补全已匹配项,ctrl+space强制唤出候选框,但内容仍受限于词库
用 LSP 插件实现真正语义补全(推荐)
LSP(Language Server Protocol)是目前最可靠的方式,需搭配 LSP 插件 + 对应语言服务器(如 pylsp for Python、typescript-language-server for TS)。
- 先通过 Package Control 安装
LSP插件 - 安装对应语言服务器:
pip install python-lsp-server(Python)、npm install -g typescript-language-server(TS) - 在
LSP.sublime-settings中配置clients,指定command路径和enabled状态 - 重启 Sublime 或执行
LSP: Enable Language Server命令激活
启用后,import requests 后输入 requests. 再按 ctrl+space,就能看到所有方法和文档注释。
sublime-completion 文件能补什么?怎么写?
这是 Sublime 最底层的补全机制,适合补固定模板(如 HTML 标签、CSS 属性),不适合动态逻辑。文件路径为:Packages/User/xxx.sublime-completions。
- 必须是 JSON 格式,顶层为
completions数组 - 每个条目含
trigger(触发文本)和contents(插入内容),支持$1、$0占位符 - 例如补
log→console.log($1);$0,写成:{ "completions": [ { "trigger": "log", "contents": "console.log($1);$0" } ] } - 不支持条件判断、变量推导,也无法读取当前作用域
LSP 是唯一能覆盖函数签名、参数提示、错误诊断的方案;手写 .sublime-completions 只适合高频固定片段;别指望原生功能理解 Python 的 self 或 JavaScript 的 this 绑定——那不是 Sublime 的设计目标。










