VSCode 不自动补全 C++ 括号的主要原因是 editor.autoClosingBrackets 设置非法(如 false)、被插件覆盖为 "never",或文件未识别为 C++ 语言模式;应设为 "always" 或 "languageDefined",并确认语言模式为 cpp、后缀合规。

VSCode 不自动补全 C++ 括号,和 C++ 语言服务器(IntelliSense)或智能提示是否启用无关,问题几乎一定出在 editor.autoClosingBrackets 这个基础编辑器设置上——它被设成了非法值 false、被插件覆盖为 "never",或者当前文件根本没被识别为 C++ 语言模式。
检查 editor.autoClosingBrackets 是否被非法禁用
这个设置控制所有括号类符号的自动闭合行为,只接受三个合法值:always、languageDefined、never。false 是非法值,VSCode 会静默忽略整行配置,导致行为不可控(通常 fallback 到 languageDefined,但部分语言未定义配对规则,结果就是“不补”)。
- 按
Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON),打开 settings.json - 全局搜索
autoClosingBrackets,确认它只出现一次,且值是"always"或"languageDefined" - 重点检查工作区
.vscode/settings.json:很多项目里写了"editor.autoClosingBrackets": false,优先级高于用户设置,GUI 界面根本看不到 - Vim 插件(如
vim.vim)常在初始化时强制设为"never",可临时禁用 Vim 插件验证
确认当前文件是 C++ 语言模式,不是 Plain Text
VSCode 的括号补全完全依赖语言模式。如果右下角显示 Plain Text、Unknown 或 Text,那连语法高亮都没有,更别说补全了——语言服务压根没启动。
- 点击右下角语言标识(比如显示
Plain Text),手动选择C++ - 确保文件后缀是
.cpp、.cc、.h、.hpp等标准扩展名;非标后缀(如.inc)需在settings.json中加映射:"files.associations": {"*.inc": "cpp"} -
files.associations写错 ID 会失效:C++ 的语言 ID 是cpp,不是c++、cplusplus或cc
别把 HTML 标签闭合和括号补全混为一谈
输入 <div> 后敲 <code>> 自动补全


















