必须修改settings.json才真正生效,gui设置仅为临时预览;插件如highlight-words、vscode-highlight依赖json配置,未写入则重启失效,且需注意路径、转义、装饰器启用及语言特设规则。

直接改 settings.json 才算真正生效
插件配置不生效,90% 是因为只在 GUI 设置里点了几下,没写进 settings.json。VSCode 的很多高亮插件(比如 highlight-words、vscode-highlight)只认 JSON 配置,GUI 界面改的只是临时预览,重启后就丢。必须打开设置 → 点右上角“打开设置(JSON)” → 把规则粘贴进去并保存。
常见错误现象:highlight-words 配置了颜色但光标停在单词上没反应;vscode-highlight 写了正则却匹配不到 //TODO —— 全是没落地到 JSON 文件导致的。
- 确认路径:Windows 是
%APPDATA%CodeUsersettings.json,macOS 是~/Library/Application Support/Code/User/settings.json - 别用插件页面的“复制默认配置”一键粘贴,那套默认值常含注释或格式错误,容易引发 JSON 解析失败
- 改完记得重启 VSCode,尤其涉及装饰器(decorations)类插件,热重载不可靠
vscode-highlight 正则必须双层转义
想高亮 //TODO,不能写 "//TODO",得写成 "\\/\\/TODO"。这是 VSCode 扩展 API 层和 JSON 解析器双重转义的结果:JSON 先吃掉一层反斜杠,剩下给正则引擎用的只剩一个,而正则里 / 是特殊字符,必须再加一个反斜杠逃逸。
实操建议:
- 测试时先用简单模式:比如
"TODO"(无斜杠),确认插件能工作后再加复杂符号 - 捕获组数量必须和颜色数组长度一致,例如
"(//)(TODO)(:)"有 3 个括号,colors就得配 3 个对象,少一个就会报错或静默失效 - 避免用
.或.*匹配过宽,容易误伤注释里的 URL 或字符串内容
highlight-words 全词匹配(whole word)不是默认行为
装完 highlight-words,按 F8 高亮 i,结果所有变量名里的 i(如 index、input)全被染色——这是因为默认模式是子串匹配。必须显式设 "highlightwords.defaultMode": 1 才启用 whole word 模式。
这个值的意义:
-
0:普通匹配(易误触) -
1:全词匹配(推荐嵌入式 C 项目,防cnt和counter互相干扰) -
2:忽略大小写(适合日志关键词搜索) -
3:全词 + 忽略大小写(适合配置项如ENABLE_LOG和enable_log同时高亮)
注意:highlightwords.box 设为 true 会加边框,但在暗色主题下可能和背景融合,建议搭配 "highlightwords.colors" 显式指定带 alpha 的十六进制色(如 "#ff9e0040")。
颜色冲突常因主题禁用装饰器(decorations)
所有高亮插件底层都依赖 VSCode 的 decoration API,如果当前主题或其它插件把 editor.decorations 关了,高亮就彻底消失,连错误提示都没有。
排查步骤:
- 打开命令面板(
Ctrl+Shift+P),输入Preferences: Open Settings (JSON),检查是否有"editor.decorations": false这行,删掉或改成true - 临时禁用所有插件,只留高亮插件,看是否恢复 —— 若恢复,说明有插件(如某些代码折叠增强工具)覆盖了 decoration 渲染层
- 暗色主题下,
highlight-words默认的第 5 号颜色(深蓝)可能和背景色太近,建议手动指定"#4dabf7"这类高对比度色值
真正麻烦的是跨语言场景:C 文件里高亮 HAL_GPIO_WritePin 没问题,但切换到 Python 文件时,同一套正则可能意外匹配到 gpio.write_pin 的下划线部分——这时候得用 language-specific 配置隔离规则,而不是一股脑全塞进全局 settings.json。











