vscode 的“检测到包含零宽字符”警告是工作区信任机制触发的安全提示,用于防范代码混淆与投毒;唯一有效关闭方式是禁用 security.workspace.trust.enabled 并重启编辑器。

为什么会出现“检测到包含零宽字符”警告
这个黄色警告是 VSCode 内置的安全机制触发的,不是 ESLint、Pylance 或其他插件产生的。它在你打开文件时自动扫描,一旦发现 (零宽空格)、(零宽非连接符)等 Unicode 隐形控制字符,就会在编辑器顶部弹出提示:“检测到包含零宽字符。这些字符可能被用于混淆代码或隐藏恶意内容。”——本质是防社工和代码投毒。
关闭该警告的唯一有效方式:禁用 workspace trust 检查
该警告由 VSCode 的工作区信任系统(Workspace Trust)驱动,无法通过关闭 ESLint、禁用语言服务器或加 // eslint-disable-next-line 规避。真正起作用的只有修改信任相关配置:
- 按
Ctrl + ,打开设置,搜索security.workspace.trust.enabled - 取消勾选该项(或手动在
settings.json中设为false) - 必须重启 VSCode 才生效
注意:这不是“关闭所有安全提示”,只是关掉基于信任状态触发的隐形字符扫描。其他安全机制(如未签名脚本拦截)仍保留。
不推荐但临时可用:用命令面板快速忽略当前文件
如果你只想让当前文件不报这个警告,且不想关全局信任检查,可以:
- 按下
Ctrl + Shift + P打开命令面板 - 输入并选择
Developer: Toggle Developer Tools - 在 Console 里粘贴执行:
vscode.workspace.getConfiguration().update('security.workspace.trust.enabled', false, vscode.ConfigurationTarget.Global)(⚠️这只是调试用法,不持久,重启即失效)
更稳妥的做法仍是改 settings.json 并重启——临时命令容易误操作,且对多人协作项目不透明。
零宽字符真没必要留,删比关警告更干净
绝大多数零宽字符是复制粘贴带进来的(比如从网页、PDF、微信消息),既无业务意义,又增加 diff 噪声和安全审查成本。建议:
- 用正则
[\u200b-\u200f\u202a-\u202e]全局搜索替换掉 - 安装扩展
Highlight Bad Chars实时标出隐形字符 - CI 流程中加一步
grep -rP $'[\u200b-\u200f\u202a-\u202e]' .阻断提交
关警告只是掩耳盗铃;删字符才是从源头切断干扰源。尤其在开源或团队项目里,隐形字符会持续引发莫名其妙的 git blame 和 lint 失败。











