editor.autoclosingbrackets 的合法值只有 always、languagedefined、never 三种字符串,true/false 为非法值会被静默忽略;工作区配置优先覆盖全局设置;语言专属配置需用 "[languageid]" 格式;html 标签闭合由 html.autoclosingtag 控制,与之无关。

editor.autoClosingBrackets 的合法值只有三个
这个设置控制 {}、()、[]、''、""、`` 的自动闭合行为,**只接受 always、languageDefined、never 三种字符串值**。填 true 或 false 是非法的,VSCode 会静默忽略,导致行为不可预测——你以为关了,其实走的是默认逻辑;你以为开了,可能被退回到 languageDefined。
常见误配:"editor.autoClosingBrackets": false 出现在 .vscode/settings.json 里,这是最隐蔽的失效原因。它不会报错,也不会在 GUI 设置里显示,但会直接让补全“失灵”。
-
always:无条件补全,输入{立刻加},光标停中间 -
languageDefined(默认):由语言服务决定——比如 TypeScript 会在字符串、注释里跳过补全,更安全但略慢 -
never:彻底关闭,连单引号都不配对,适合写正则或模板字符串时临时禁用
工作区配置会直接覆盖全局设置
很多人只检查了 GUI 设置界面,却漏掉项目根目录下的 .vscode/settings.json。只要这里写了 "editor.autoClosingBrackets": "never" 或 false,全局设成 always 也无效。
正确做法是按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Preferences: Open Settings (JSON),然后搜索 autoClosingBrackets ——确保它**只出现一次**,且值为 "always" 或 "languageDefined"。
如果搜到多处,优先删掉工作区里的非法行;如果只剩全局配置但依然不生效,再查插件干扰(如 Vim 插件常在初始化时强制设为 never)。
按语言 ID 单独配置才能精准控制
全局设 always 会导致 JSON 文件里输 " 也硬补 "",干扰编辑;而 Markdown 里补 ( 成 () 也毫无意义。这不是 bug,是设计使然——不同语言的补全逻辑本就该不同。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
要用语言专属配置,格式必须严格:"[javascript]": {"editor.autoClosingBrackets": "always"}。方括号不能少,语言 ID 必须准确:
-
javascript(不是js) -
typescript(不是tsx) -
vue(不是vue-html) - 右下角点语言名 → “Configure Language Specific Settings” 可自动生成正确 key
错误示例:"javascript": {...}(缺方括号)或 "js": {...}(ID 不存在)——这两者都不会生效。
HTML 标签闭合和括号补全是两套机制
输入 <div> 后敲 <code>> 补










