VSCode补全失效主因是语言服务器未启动、扩展冲突或缓存损坏,而非单纯设置问题;需先通过Developer: Restart Language Server或code --disable-extensions隔离验证,再清理缓存与重置配置。

VSCode 默认的代码补全(IntelliSense)行为不是靠单个开关控制的,而是由多个配置项协同决定;直接改 "editor.suggest.*" 或关插件可能治标不治本,真正卡住补全的往往是语言服务器状态、扩展冲突或缓存损坏。
为什么改了 editor.suggest 还没用
VSCode 的补全能力分三层:编辑器建议(editor.suggest)、语言服务器(LSP)响应、以及扩展提供的增强逻辑(如 TypeScript 自带、Python Pylance、JS/TS 的 @vscode/typescript-next)。只调 editor.suggest.showInlineDetails 或 editor.suggest.preview 很难见效,因为:
- 语言服务器没启动成功(比如 TypeScript Server 崩溃,控制台报
Cannot read property 'getProgram' of undefined) - 某个扩展(如 Auto Import、ES7 React Snippets)劫持了
Ctrl+Space并返回空结果 -
settings.json里写了"typescript.preferences.includePackageJsonAutoImports": "auto"但本地没装对应插件,导致整个 TS 补全链静默降级 - workspace 级配置覆盖了 user 级设置,且
.vscode/settings.json里有"editor.suggest.enabled": false
先确认是不是补全引擎本身挂了
别急着删配置,先验证底层是否正常:
- 打开一个
.ts文件 → 按Ctrl+Space→ 如果弹出“Loading…” 卡住超过 3 秒,大概率是 TypeScript Server 崩了 - 按
Ctrl+Shift+P→ 输入Developer: Toggle Developer Tools→ 切到 Console 标签,看有没有红色报错,重点关注tsServer、languageClient、completionItemProvider - 在命令面板执行
Developer: Restart Language Server(对 TS/JS/Python 等有效),观察补全是否恢复 - 临时禁用所有扩展:
code --disable-extensions启动 → 打开同个文件再试Ctrl+Space;如果这时能出建议,说明是扩展冲突
重置补全相关核心配置项
这些配置项直接影响补全触发和展示,清空或重设为默认值最稳妥:
- 打开
Preferences: Open Settings (JSON),删掉以下字段(或设回默认):"editor.suggest.enabled"→ 删除或设为true"editor.suggest.showMethods"、"editor.suggest.showFunctions"等 → 全部删掉(默认全为true)"editor.quickSuggestions"→ 设为{"other": true, "comments": false, "strings": false}(默认值)"editor.suggestSelection"→ 删掉(默认是"recentlyUsed") - 特别注意:如果用了 Pylance、Rust Analyzer、Vue Volar 等,它们各自有独立配置,比如:
"python.analysis.autoSearchPaths"、"rust-analyzer.checkOnSave.command"—— 这些不能靠清editor.suggest解决,得单独查对应扩展文档 - 删掉 workspace 级设置:检查项目根目录下
.vscode/settings.json,移除所有editor.suggest.*和语言相关补全开关
缓存和语言服务器状态必须清理
补全依赖本地语言服务进程和缓存索引,旧缓存常导致建议缺失或延迟:
- 关闭 VSCode(确认 macOS 的「活动监视器」无
Code Helper,Windows 任务管理器无Code.exe子进程) - 删除语言服务器缓存目录:
Windows:%APPDATA%\Code\Cache\*和%APPDATA%\Code\CachedData\*
macOS:~/Library/Caches/com.microsoft.VSCode.ShipIt和~/Library/Caches/com.microsoft.VSCode
Linux:~/.cache/Code/* - 重启 VSCode 后,首次打开文件会重建索引,等右下角状态栏不再显示 “Indexing…” 再测试补全
- 如果仍异常,执行命令
Developer: Reset User Data(会清空User目录下所有配置 + 缓存,但保留已安装扩展)
补全问题最难排查的点在于它跨层耦合:编辑器参数只是表象,语言服务器状态、扩展生命周期、磁盘缓存三者任一出错都会表现为“没提示”。与其逐项调参,不如先用 --disable-extensions 和 Developer: Restart Language Server 快速隔离,再决定要不要动 User 目录。


















