VSCode代码补全依赖语言服务器(LSP),失效主因是LSP未启动或配置错误;需检查状态栏、开发者工具报错、文件后缀与路径配置,并验证textDocument/completion请求响应。

VSCode 的代码补全不是靠编辑器自己“猜”,而是由语言服务器(LSP)提供支持——没装对扩展、没配好 settings.json、或项目结构不标准,补全就会失效或建议不准。
为什么 TypeScript/Python/Go 补全突然不工作了?
常见现象:敲 console. 没反应,import 后无模块提示,跳转定义失败。根本原因通常是语言服务器进程未启动或崩溃。
- 检查状态栏右下角:是否有
TS Server、Python (Pylance)或gopls正在运行;若显示Starting...卡住,说明初始化失败 - 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,看 Console 里是否报Failed to start language server - Python 用户特别注意:
python.defaultInterpreterPath必须指向含pylance或python-language-server的环境,虚拟环境路径写错就等于没装
如何手动触发并验证 LSP 是否正常响应?
补全不是“自动”发生的魔法,它依赖编辑器向语言服务器发送 textDocument/completion 请求,并等待返回。你可以用这个流程验证链路是否通畅:
- 确保文件已保存(.ts/.py/.go 等后缀),且未被排除在
"files.exclude"或"python.defaultInterpreterPath"外 - 在代码中输入一个明确可补全的点,比如 TypeScript 中写
Array.from(后按Ctrl+Space,强制唤出建议 - 打开命令面板,运行
Developer: Toggle Shared Process,查看日志中是否有onCompletion请求及对应 response - 如果响应为空,大概率是
jsconfig.json或tsconfig.json缺失,或"include"路径没覆盖当前文件
补全建议太杂/太慢?调整 LSP 的关键配置项
默认补全行为偏向“全量提示”,但实际开发中更需要精准、低延迟的结果。以下配置直接影响建议质量与速度:
-
"editor.suggest.showKeywords": false—— 关闭关键字(如if、for)混入变量建议,减少干扰 -
"editor.quickSuggestions": {"other": true, "comments": false, "strings": false}—— 只在代码区启用建议,注释和字符串中禁用 - TypeScript 用户加:
"typescript.preferences.includePackageJsonAutoImports": "auto",避免import补全时漏掉 node_modules 里的包 - Python + Pylance:设
"python.analysis.autoSearchPaths": true,否则多目录项目无法跨文件补全
{
"editor.suggest.showKeywords": false,
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
},
"typescript.preferences.includePackageJsonAutoImports": "auto",
"python.analysis.autoSearchPaths": true
}
LSP 的真实复杂度藏在路径解析、类型推导和缓存策略里——比如 gopls 会扫描整个 go.mod 依赖树,而 Pylance 默认只索引打开的文件夹。补全不准,往往不是插件坏了,而是你没告诉它“该看哪”。










