vscode括号引号自动补全由editor.autoclosingbrackets控制,合法值为always、languagedefined、never;false为非法值,会导致行为不可控,需在settings.json中设为always或languagedefined,并支持语言特定配置。

VSCode 默认就开着括号和引号自动补全,关掉的不是功能本身,而是你的 editor.autoClosingBrackets 设置被设成了 never、false,或者被 Vim/Prettier/Emmet 类插件悄悄覆盖了。
检查并修复 editor.autoClosingBrackets 配置
这个设置控制所有基础成对符号:()()、[][]、{}{}、''''、""""、```` 的自动闭合行为。它只接受三个合法值:always、languageDefined、never。
-
false是非法值,VSCode 会静默忽略,退回到不确定的默认行为(通常是languageDefined),但结果不可控 - 常见误配位置:工作区
.vscode/settings.json里写了"editor.autoClosingBrackets": false,而你只看了 GUI 设置界面,没查 JSON 视图 - Vim 插件(如
vim.vim)常在初始化时强制设为never,尤其在按i进入插入模式前已生效 - 正确做法:按
Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON)→ 搜索autoClosingBrackets→ 确保它只出现一次,且值为"always"或"languageDefined"
按语言 ID 单独开启,避免全局一刀切
有些语言(比如 Markdown、JSONC、Plain Text)默认不补引号或括号,这是有意设计,不是 bug。你不能靠全局开关“一招鲜”,得用语言特定配置。
- 想让 JavaScript 文件里输入
'也自动补'',但又不想影响 JSON 文件:在settings.json中加"[javascript]": {"editor.autoClosingBrackets": "always"} - 保持
"[json]": {"editor.autoClosingBrackets": "languageDefined"}(JSON 默认不补引号) - 语言 ID 必须准确:
javascript不是js,typescript不是tsx;可在右下角点语言名 → “Configure Language Specific Settings” 自动生成正确 key - 错误示例:
"javascript"(缺方括号)或"js"(ID 不存在)都不会生效
HTML 标签自动闭合是另一套机制,别混在一起调
输入 <div> 后敲 <code>> 自动补











