sublime text原生补全仅为单词记忆,智能提示必须配置lsp插件+语言服务器;未启动服务器是无提示主因,需确认scope、控制台日志及command可执行性,并启用auto_complete_commit_on_tab。

Sublime Text 原生的 auto_complete 只是当前文件单词记忆,不是智能提示;真正要补全 requests.get() 的参数、悬停看类型、跳转定义,必须配 LSP 插件 + 对应语言服务器——没这一步,其他设置全是白搭。
为什么装了 LSP 却没提示?先查三件事
多数人卡在“LSP 状态栏没显示 active”,本质是语言服务器根本没启动。别重装插件,先确认:
- 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS),看输出是否含source.python或source.ts—— 若是text.plain,说明 Sublime 没识别语法,syntaxes配置直接失效 - 打开控制台(
Ctrl+`),搜LSP或error,重点找Failed to start server: exit code 1或spawn pylsp ENOENT - 把配置里的
command数组粘到终端手动执行(如pylsp --version),报command not found就得补 PATH 或改用绝对路径
Python 补全只出变量名?换 pyright,别碰 pylsp
pylsp 功能基础,对 Self、PEP 695 类型、泛型支持弱;pyright 是微软维护的现代实现,类型推导准、启动快、内存低,且默认启用 docstring 提示。
- 用
pip install pyright安装(不是 npm,不用加[all]) - 在
LSP.sublime-settings的clients里写:{ "pyright": { "command": ["pyright", "--stdio"], "enabled": true, "languageId": "python", "scopes": ["source.python"], "syntaxes": ["Packages/Python/Python.sublime-syntax"] } } - 项目根目录必须有
pyrightconfig.json或pyproject.toml(哪怕空文件),否则降级为宽松模式,类型信息丢失 - 若用虚拟环境,
pyright必须在该环境中安装,或把绝对路径填进command(如["/path/to/venv/bin/pyright", "--stdio"])
JS/TS 补全卡顿或 JSX 不识别?tsserver 必须走项目本地版本
全局安装的 typescript-language-server 默认不读你项目里的 node_modules/typescript,导致路径别名、JSX、baseUrl 全部失效。
- 在项目根运行
npm install typescript --save-dev(pnpm/yarn 同理) -
LSP.sublime-settings中配置initializationOptions显式指定 tsdk:"typescript-language-server": { "command": ["typescript-language-server", "--stdio"], "initializationOptions": { "typescript.tsdk": "./node_modules/typescript/lib" }, "scopes": ["source.js", "source.ts", "source.jsx", "source.tsx"], "syntaxes": ["Packages/JavaScript/JavaScript.sublime-syntax"] } -
tsconfig.json必须在项目根,且含"jsx": "preserve"或"react-jsx";"moduleResolution": "node"和"allowSyntheticDefaultImports": true也得开,否则 import 补全残缺 - 禁用
"files": []—— 它会让 tsserver 忽略所有自动推导,只处理列表内文件
补全弹出来但 Tab 不选中?用户设置里漏了关键项
即使 LSP 连上了,Sublime 默认禁用 Tab 确认补全。哪怕补全框弹出,按 Tab 仍只缩进——这是最常被忽略的一条。
- 在
Preferences → Settings (用户)中加:"auto_complete_commit_on_tab": true, "auto_complete_with_fields": true
-
auto_complete_triggers要按语言精确配,比如 Python 写点号触发:"auto_complete_triggers": [ {"selector": "source.python", "characters": "."} ] - 别设
auto_complete_selector为"source, text"—— 它会让补全在 Markdown 里乱弹,推荐用"source"或拆成多个 selector - 如果仍无效,临时禁用
AutoFileName或All Autocomplete—— 它们会劫持 Tab 行为
配置难点不在插件安装,而在语言服务器与 Sublime 的通信链路:scope 匹配、command 可执行、项目配置存在、初始化选项传参——四个环节任一断裂,LSP 就静默失效,连错误日志都不报。











