vscode补全仅显示单词是因语言服务器未接管,本质为语义分析失效;首要检查右下角是否为plain text或unknown,手动切换正确语言模式,确认文件已保存、后缀匹配、files.associations无误、editor.quicksuggestions.strings为true,并确保tsconfig.json/jsconfig.json或python配置存在且路径正确。

VSCode 补全只显示纯文本(比如只有 console、pathlib 这种单词,没有方法、参数、类型提示),本质是语言服务器没接管——它只做了词频匹配,没做语义分析。
右下角是不是 Plain Text 或 Unknown
这是最常被跳过的起点。VSCode 不识别语言,就不会启动 Pylance、tsserver 或 clangd,补全退化为纯文档单词索引。
- 点击右下角灰色文字(哪怕看起来是空的),输入
Python/TypeScript/JavaScript回车切换 - 未保存的文件(如
Untitled-1)默认就是Plain Text,必须先保存为.py、.ts等后缀再测试 - 检查
settings.json里有没有错误的"files.associations",例如把"*.js"映射成"typescript",会导致 JS 文件走 TS 解析但配置不全,补全降级
editor.quickSuggestions.strings 是不是 false
这个设置控制字符串内是否触发补全。如果它是 false,你在 import 路径、require()、fetch('') 里输 ./ 就不会弹路径;更关键的是,它关掉后,很多语言服务器的上下文感知会直接失效。
- 打开设置(
Ctrl + ,),搜quick suggestions - 确保
editor.quickSuggestions的other、strings、comments三项都设为true - 特别注意:JS/TS 项目里,
strings: true是 import 路径补全、html src=""提示的前提
Pylance / tsserver 日志里有没有 Failed to load project
补全有单词、没签名,大概率是语言服务器加载了但没读到项目配置,只能做基础 token 匹配。
- 对 Python:设
"python.analysis.logLevel": "Trace",然后看「输出」面板 →Python Language Server日志,搜Failed to load project或ENOENT - 对 TS/JS:确认项目根目录有
tsconfig.json或jsconfig.json,最简内容至少含:{"compilerOptions": {"module": "nodenext", "target": "es2020"}} - 路径错配很常见:比如工作区打开的是子目录,但
tsconfig.json在上层;或include没覆盖src/**/*,导致源码文件不被索引
editor.suggest.localityBonus 是不是 true
这个开关会让 VSCode 优先展示“光标附近出现过的符号”,而把全文档匹配的拼写词压到后面——结果就是你看到一堆函数名,但输 hand 却不提示 handleClick。
- 它不影响语言服务器提供的类型补全,但会影响单词补全的可见性
- 想让拼写建议更容易露头,加配置:
"editor.suggest.localityBonus": false - 但代价是:跨文件定义的函数可能排序靠后;真要兼顾,不如先确保
editor.wordBasedSuggestions是true,且语言模式正确
真正卡住补全的,往往不是开关没开,而是语言服务器压根没拿到足够上下文——比如 tsconfig.json 缺失、python.languageServer 被设成 Jedi、或者第三方库没装 types-xxx。这些地方一漏,补全就只剩壳子。











