vscode补全失效主因是语言服务未加载或语言模式错误:先确认右下角非plain text/unknown,手动切换正确语言模式,再检查editor.quicksuggestions.strings为true、editor.tabcompletion设为"on",并确保jsconfig.json/tsconfig.json存在且已重启对应语言服务器。

VSCode 默认已开启基础补全,但多数人遇到的“不补全”问题,根本不是开关没开,而是语言服务压根没加载成功,或者当前上下文根本不被识别为可补全位置。
右下角语言模式不对,补全就是摆设
VSCode 不看文件后缀,只认右下角显示的 language mode。如果显示 Plain Text 或 Unknown,哪怕你在编辑 .py 文件,editor.quickSuggestions 设成 true 也完全无效。
- 按
Ctrl + Shift + P→ 输入Change Language Mode→ 手动选Python、TypeScript或对应语言 - Vue 单文件组件中
<script></script>块默认可能是HTML,必须点右下角切换 - 写一行明显类型错误的代码(如
const a: number = 'x'),没红色波浪线?说明语言服务器没接管
Ctrl+Space 按了没反应,90% 是快捷键被抢了
Ctrl+Space 在 Windows 上几乎默认被中文输入法占用作中英文切换;macOS 的 Cmd+Space 被 Spotlight 占用。VSCode 默认已退避为 Cmd+Shift+Space,但很多人没意识到这点。
- Windows:进输入法设置 → 关闭「使用 Ctrl+Space 切换输入法」
- macOS:系统设置 → 键盘 → 快捷键 → 屏幕快照/Spotlight 里关掉
Cmd+Space - VSCode 内按
Ctrl+Shift+P→ 输入Preferences: Open Keyboard Shortcuts→ 搜editor.action.triggerSuggest,确认绑定未被覆盖或标红“冲突”
路径补全和点号补全,触发逻辑完全不同
路径补全(如 import '@/utils/')不靠 Ctrl+Space 启动,它只在特定语法上下文中自动激活:import、require()、src/href、@import、url()。普通字符串里输 './' 不会弹——这不是 bug,是设计如此。
- 确保
editor.quickSuggestions.strings设为true(仅对路径上下文生效) - JS/TS 项目必须有
jsconfig.json或tsconfig.json,否则路径别名(如@/)和跨文件补全都失效 - 改完配置后必须执行
Ctrl+Shift+P→TypeScript: Restart TS server,不重启等于白改
Tab 键不补全?检查这个字符串值
editor.tabCompletion 必须设为 "on"(注意是字符串,不是布尔值 true)。设成 "off" 或留空,Tab 就永远只缩进,不接受任何建议。
- 它和
editor.acceptSuggestionOnEnter无关:后者管 Enter,前者只管 Tab - 某些 Snippet 插件(如 Auto Close Tag)会劫持 Tab 行为,补全失效时可临时禁用插件验证
- 若建议框没展开,Tab 不会唤出它——得先按
Ctrl+Space,再按 Tab
最常被忽略的是:补全质量差,不是快捷键或设置的问题,而是语言服务器本身没跑起来。比如 Python 项目里只装了 ms-python.python 但没启用 Pylance,或 JS 项目缺 jsconfig.json,这时候调快捷键毫无意义——得先让 pathlib.Path(). 能列出完整方法,或 console. 能弹出 log、error 等 API,补全才算真正就位。











