ctrl+space没反应主因是lsp未启用或语言服务器未连上;需执行lsp: enable language server globally,确认右下角显示lsp active,并确保"auto_complete": true和"auto_complete_commit_on_tab": true已启用。

Ctrl+Space没反应?先确认LSP是否已启用
Sublime Text 默认不带真正智能提示,Ctrl+Space 无响应大概率是因为 LSP 插件没启用或语言服务器没连上。不是快捷键坏了,是背后没服务在跑。
打开命令面板 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入 LSP: Enable Language Server Globally 并执行。这一步必须做,否则即使装了 pylsp 或 typescript-language-server,也不会监听当前文件。
- 右下角状态栏应出现 “LSP active” 或对应语言名(如 “Python (pylsp)”)
- 若没出现,检查
LSP.sublime-settings中"enabled": true和对应语言的"command"路径是否正确(比如不能只写["pylsp"],得是["/usr/local/bin/pylsp"]) - 终端运行
pylsp --version或typescript-language-server --version,有输出才算语言服务器装好了
补全框不自动弹出?改两个关键设置
LSP 提示默认不随输入自动触发,尤其在 os.、requests. 这类点号后——它等你按快捷键,而不是猜你想补全。
打开 Preferences > Settings(用户设置),确保以下两项存在且为 true:
-
"auto_complete": true—— 否则根本不会尝试弹框 -
"auto_complete_commit_on_tab": true—— 否则按Tab不确认补全项,只能用方向键+回车
如果仍想“输入点号后自动唤起”,可加配置:
{
"auto_complete_triggers": [
{ "selector": "source.python", "characters": "." },
{ "selector": "source.js", "characters": "." }
]
}
自定义补全快捷键?别动默认,直接加新键
很多人想把补全绑定到 Ctrl+Enter 或 Alt+/,但没必要覆盖默认行为。LSP 补全本身没有专属命令名,它依赖 Sublime 原生的 auto_complete 命令。
在 Preferences > Key Bindings(用户文件)里加一条即可:
[{
"keys": ["alt+."],
"command": "auto_complete",
"context": [
{ "key": "auto_complete_visible", "operator": "equal", "operand": false }
]
}]
-
"alt+."是个低冲突组合,比Ctrl+Space更易按(尤其 macOS 上常被 Spotlight 占用) -
context保证只在补全框未显示时触发,避免重复弹出 - 不要删掉原有
Ctrl+Space条目,留着备用;多个快捷键可共存
JavaScript/TypeScript 提示为空?检查项目配置文件
哪怕 typescript-language-server 装好了、LSP 启用了,import React from 'react' 后敲 React. 仍没提示——大概率是缺 jsconfig.json 或 tsconfig.json。
这两个文件不是可选的,是语言服务器识别项目范围和模块路径的依据。没有它们,服务器退化为纯文本词频匹配,和 Sublime 自带补全没区别。
- 新建空项目时,至少放一个最简
jsconfig.json:
{
"compilerOptions": {
"allowJs": true,
"checkJs": false,
"target": "ES2020",
"moduleResolution": "node"
},
"include": ["**/*.js"]
}
- VS Code 用户容易忽略这点:Sublime 的 LSP 不会自动 fallback 到 node_modules 解析,必须靠配置显式声明
- 路径错误、
"include"漏了源码目录、"moduleResolution"写成"classic"都会导致模块内容不加载
最常被跳过的环节是验证语言服务器是否真在工作——不是看插件装了没,而是看终端能否跑通 --version、右下角有没有 LSP 标识、以及打开控制台 Ctrl+` 后有没有连接日志。其他所有设置都建立在这个前提之上。











