vs code补全失效主因是语言服务上下文识别错误、jsconfig/tsconfig别名配置缺失或不规范、插件返回空数组被静默忽略,以及网络接口协议不匹配。

补全不弹出来?先看触发上下文和语言模式
VS Code 的补全不是全局生效的,它严格依赖当前光标所处的语法上下文和语言服务识别结果。比如输入 import 后跟空格或引号,才会触发路径补全;在 console. 后才可能弹出 API 列表;而 console.log('./') 里的 './' 默认不触发路径建议——因为语言服务判定这是普通字符串,不是模块导入上下文。
常见失效场景:
- 右下角状态栏显示
Plain Text或HTML,但你在编辑.vue文件 → 点击切换为Vue模式 - 项目里没放
jsconfig.json或tsconfig.json→defineProps、ref等宏无提示,补全变灰色 - 同时装了 Vetur 和 Volar → Vetur 的残留配置(如
vetur.grammar.customBlocks)会干扰 Volar 解析模板
路径补全总找不到别名(如 @/components)?配 baseUrl 和 paths 是硬要求
VS Code 不会自动理解 @/ 这种别名,必须通过 jsconfig.json 或 tsconfig.json 显式声明。只改 Webpack/Vite 别名配置是没用的,语言服务看不到。
关键点:
-
baseUrl必须是相对jsconfig.json所在路径的目录,通常设为"." -
paths的 key 要带尾部/*,value 也要对应写["src/*"],少一个星号就失效 - 改完配置后,必须重启 TS 服务:按
Ctrl+Shift+P→ 输入Typescript: Restart TS server - 验证是否生效:在
import后输入@/,看是否有文件列表;没有的话检查控制台输出(Ctrl+Shift+U→ TypeScript 通道)是否有路径解析错误
补全项返回空数组却没报错?那是 VS Code 的静默设计
provideCompletionItems 返回空数组,VS Code 就当“当前无建议”,不会警告、不会 fallback、也不会继续查其他提供器。这很容易让人误以为插件挂了,其实是逻辑没覆盖到。
高频漏检点:
- 没做
position.character边界判断,光标在行首时substr(0, 0)得空串,后续正则全失效 - 前缀含缩进或中文,直接
.includes('console')失败 → 改用linePrefix.trimEnd().endsWith('console') -
insertText传了null或对象 → 整个CompletionItem被丢弃,建议列表变空 - 注册时用了
'*'全局匹配,但没过滤语言 ID → 在 JSON 文件里输.也调用你的逻辑,结果返回空数组,反而压掉了原生补全
想让 AI 补全(如 Continue.dev)稳定工作?绕过本地模型陷阱
Continue.dev 本身不跑模型,它只是把上下文打包发给 OpenAI 兼容接口。所以你不需要 GPU、不装 Ollama、也不配 llama.cpp —— 只要确保 apiBase 可达、Authorization 正确、且服务端支持 /v1/chat/completions 即可。
实操避坑:
- 别在
config.yaml里写死model: gpt-4→ TaoToken 会根据路由规则自动选模型,填错反而 404 - 测试连通性优先用
curl https://taotoken.net/api/v1/models -H "Authorization: Bearer $TAOTOKEN_KEY",比直接开 VSCode 排查快得多 - 补全延迟高?不是本地卡,是网络往返 + 首 token 时间;轻薄本上 16G 内存完全够用,别折腾本地部署
- 补全内容乱码或截断?检查响应头是否含
Content-Type: application/json,TaoToken 接口必须严格符合 OpenAI v1 协议格式
补全功能真正卡住的地方,往往不在代码逻辑,而在语言服务识别边界、配置文件的隐式依赖、或网络协议细节。这些地方一漏,表现就是“明明写了却没反应”,而 VS Code 偏偏不报错。











