vscode代码补全失效主因是语言服务未连接、文件类型识别错误或tabcompletion未启用;需先确认右下角语言模式非plain text,再检查quicksuggestions和tabcompletion设置是否开启,并确保jsconfig/tsconfig存在及语言服务器正常运行。

VSCode代码补全失效,90%不是插件坏了,而是语言服务没连上、文件没认对、或者editor.tabCompletion被悄悄关掉了——重装插件或重启电脑往往白忙。
右下角显示 Plain Text 或 Unknown 怎么办
这是最常见也最容易被忽略的起点:VSCode根本不知道你在写什么语言,所有语言服务器(如tsserver、Pylance、gopls)都不会启动,IntelliSense压根不加载。
- 点击右下角状态栏中显示的
Plain Text或Unknown,手动选成JavaScript、TypeScript、Python、Vue等正确语言模式 -
.vue文件必须选Vue(不是Vue HTML或HTML),否则Volar不接管,defineProps、ref等补全全失效 - 未保存的临时文件(如
Untitled-1)默认是Plain Text,不触发任何语言服务;先保存为test.py或index.ts再试 - 检查
files.associations配置是否误配,比如"*.js": "typescript"会让utils.js走TS解析,类型校验错乱、补全降级
editor.quickSuggestions 和 editor.tabCompletion 没开
这两个设置控制补全“弹不弹”和“Tab 键管不管用”,它们默认在部分语言里是关闭的,并非 bug。
- 打开设置(
Ctrl + ,),搜quick suggestions,确保editor.quickSuggestions在other、strings、comments三项都设为true;特别注意strings必须为true,否则import路径、HTMLsrc属性里不提示 - 搜
tabCompletion,把editor.tabCompletion设为"onlySnippets"(推荐)或"on";设成"off"时,Tab 只缩进,不触发补全 - 这些开关在 UI 设置界面改,只影响当前工作区;要全局生效,得确认
settings.json里有对应项,且没被 workspace 配置覆盖 - 别漏掉
editor.suggestOnTriggerCharacters,它控制.、:、(后是否自动弹建议,默认true,但某些插件可能悄悄设为false
tsserver / Pylance / gopls 卡死或没加载怎么查
补全空白、悬停无类型、跳转定义失效,大概率是语言服务器进程挂了、没启动、或加载失败——UI 上不报错,但日志里全是线索。
- 命令面板(
Ctrl + Shift + P)运行Developer: Restart Language Server:对 TypeScript/JS 是重启tsserver,对 Python 是重启Pylance,Go 项目则重启gopls - 设
"typescript.tsserver.log": "verbose"或"python.analysis.logLevel": "Trace",然后看「输出」面板 → 选TypeScript Server Log或Python Language Server - 常见日志线索:
Failed to load project(tsconfig.json路径错)、ENOENT: no such file(工作区根路径识别错误)、Cannot read property 'map' of undefined(插件版本不兼容) - Windows 用户可任务管理器杀掉残留的
node.exe进程;macOS/Linux 可执行pkill -f tsserver或pkill -f pylance
JS/TS 补全跨不了文件?缺 jsconfig.json 或 tsconfig.json
没有这个配置文件,VSCode 就把整个项目当单个 JS 文件处理:路径别名(如@/utils)、第三方库类型定义、import模块解析全部失效。补全是“盲猜”,跳转是“摆设”。
- 在项目根目录新建
jsconfig.json(JS 项目)或tsconfig.json(TS 项目) - 最简内容至少含:
{"compilerOptions": {"module": "nodenext", "target": "es2020", "allowJs": true, "checkJs": true, "moduleResolution": "nodenext"}} - 用了别名(如
@/components)?必须加baseUrl和paths,例如:"@/*": ["src/*"] - 改完立刻执行
Ctrl + Shift + P→TypeScript: Restart TS server,不重启等于没改
真正卡住的地方往往藏在日志里,而不是设置项中;而最容易被跳过的动作,就是点一下右下角语言模式——它不显眼,却是整个 IntelliSense 链路的起点。











