sublime text需配置lsp+语言服务器实现智能补全;右下角语法须为python/css而非python 3/css3;用户设置中添加auto_complete_triggers、auto_complete_commit_on_tab等关键项;禁用sublimecodeintel,改用lsp-pyright;css/html补全依赖作用域配置。

Sublime Text 默认就弹出补全框,但你看到的只是当前文件里出现过的单词——不是智能补全,只是“打过字的记录”。要真正提示 requests.get() 的参数、str.split() 的签名、或者 div 标签的合法属性,必须配 LSP + 语言服务器,且关键设置不能漏。
为什么按 . 或 : 没反应?检查右下角语法和 auto_complete_triggers
右下角显示 Plain Text 或 Python 3(而非 Python)时,LSP 和所有语言相关补全都会静默失效。这不是插件没装好,是作用域根本没匹配上。
- 手动切换语法:
View → Syntax → Python(不是Python 3),CSS 同理选CSS,不是CSS3或SCSS - 在用户设置中加触发器,让点号和冒号主动唤出补全:
"auto_complete_triggers": [ {"selector": "source.python", "characters": "."}, {"selector": "source.css", "characters": ":"} ] -
auto_complete_selector别设成"source, text"——它会让补全在 Markdown 里也乱弹,推荐用更精确的"source"或按需拆分
Tab 键只插空格,不选补全项?缺这行设置
这是最常被忽略的一条:Sublime 默认禁用 Tab 确认补全。哪怕 LSP 已跑起来、补全框也弹出来了,按 Tab 依然只进缩进。
- 必须在用户设置里显式启用:
"auto_complete_commit_on_tab": true
- 顺手加上这句,能让
${1}类代码片段支持Tab跳转:"auto_complete_with_fields": true
- 如果仍无效,临时禁用
AutoFileName或All Autocomplete——它们会劫持Tab行为
Python 补全没提示方法列表?别碰 SublimeCodeIntel,用 LSP-pyright 或 pylsp
SublimeCodeIntel 已停更多年,对 Python 3.11+、Self 类型、PEP 695 类型语法完全无响应,还会导致 Sublime 卡死在保存瞬间。
- 装
LSP插件后,再装LSP-pyright(推荐)或LSP-pylsp(兼容性稍广) - 确认
LSP.sublime-settings中对应客户端的"enabled": true,且"command"能找到可执行文件(如pyright在$PATH中) - 补全不会秒出:等右下角状态栏出现
LSP-pyright active(通常 2–5 秒),再试os.或pathlib.Path(). - 函数参数提示不用额外操作:光标停在括号内,悬停几秒或按
Ctrl+Shift+P → LSP: Show Hover
CSS/HTML 补全不全?靠 scope 不靠插件数量
装十个 CSS 插件不如一行 selector 配置管用。Sublime 的 HTML/CSS 补全极度依赖作用域识别,不是“装了就灵”。
- 确保
auto_complete_selector包含source.css和text.html,并排除注释干扰:"source.css -comment"
- HTML 中想输入
<di> 就提示 <code><div>,加这个触发器:<pre class="brush:php;toolbar:false;">{"selector": "text.html", "characters": " </pre> <li>别指望 <code>Emmet提供属性值补全——它只展开缩写;CSS 属性值(如display: flex)得靠原生机制或CSS3插件配合作用域
真正卡住人的从来不是“怎么装”,而是右下角语法不对、auto_complete_commit_on_tab 没开、或语言服务器路径没被正确发现。这些地方错一个,补全就退化回“猜你之前打过什么”。











