Chinese Red Background
在 VSCode 中检测并高亮包含中文汉字的代码行(红色背景)。支持区分“全部汉字 / 简体启发式 / 严格简体差异”三种模式,适用于:
- 代码中混入中文需要快速发现
- 中日文混合内容审查,仅想看出“确实是简体特征字”的行
- 质量/规范检查(例如限制代码中出现中文)
✨ 主要特性
功能 |
说明 |
行级高亮 |
一旦本行出现匹配汉字,整行加半透明红背景,视觉聚焦明显 |
模式切换 |
all / simplified / strict 三种模式(默认 strict) |
日文规避 |
可选跳过含假名的整行,减少误判 |
严格差异集 |
strict 模式使用内置精简“简体特征字”集合,尽量不亮常见日文汉字 |
自定义补充 |
可配置追加额外要识别为简体的单字 |
快速开关 |
命令面板一键启用/停用 |
⚙️ 配置项 (Settings)
在 VSCode Settings (搜索 chineseRedBackground) 中可调:
Key |
默认 |
说明 |
chineseRedBackground.mode |
strict |
all=全部汉字; simplified=启发式; strict=严格差异集合 |
chineseRedBackground.skipKanaLines |
true |
行内含日文假名(平/片假名)则整行跳过,不做高亮 |
chineseRedBackground.extraSimplifiedChars |
(空) |
追加希望被当作“简体差异字”的单字字符集合 |
提示:若你只想“任何汉字都提示”,请选择 all
;若希望“尽量排除日文常用”,保持 strict
。
🧪 模式说明
- all:匹配所有基本 CJK 统一表意文字块 (含扩展A、兼容),适合快速发现任意汉字。
- simplified:使用一份差异集(与 strict 同源),但保留一定扩展灵活性,可能少量亮到日文汉字。
- strict:仅内置“常见简体差异字”集合 + 你的
extraSimplifiedChars
,最大限度降低误亮。
本扩展不做形态学/词法级复杂判断,属于启发式扫描,极端场景可能仍有误差。
🖥️ 命令 (Command Palette)
Chinese Red Background: 开关高亮
效果:在启用/关闭之间切换;关闭后所有装饰清除,不影响文件内容。
🚀 安装
方式一:Marketplace (如果已发布)
搜索 “Chinese Red Background”。
方式二:本地 VSIX
- 运行
npm install
安装依赖
- 执行
npm run build
生成/更新 *.vsix
- VSCode -> Extensions -> 右上角
...
-> Install from VSIX...
选择打包出的文件
🔍 工作机制
- 监听活动编辑器变更、文档内容变更
- 按行读取文本:
- 若启用
skipKanaLines
且行含假名 -> 跳过
- 根据模式判断是否命中差异集合
- 一旦命中 -> 整行加入 decoration
- 使用 VSCode
TextEditorDecorationType
设置半透明背景
复杂度:O(N * 行平均长度) 的线性扫描,适合绝大多数源文件;如需更高效可改为“可视行”增量策略。
🧩 性能与优化建议
情况 |
建议 |
超大文件 (>5MB) |
可临时切换 mode=all 避免集合判断开销(已很小) |
高频编辑 |
装饰会实时刷新,若需延迟可改成防抖 (setTimeout) |
仅关心新增内容 |
可在源码中改为 diff 方式(当前是全行扫描) |
🛠️ 开发 / 构建
npm install
npm run compile # 仅编译 TypeScript -> dist
npm run package # 生成 VSIX 包
npm run build # (compile + package)
输出文件: vscode-chinese-red-background-x.y.z.vsix
🧱 目录结构
├─ src/extension.ts # 主逻辑
├─ dist/ # 编译输出(JS)
├─ package.json # 扩展元数据/脚本
├─ README.md # 说明文档
├─ LICENSE # 许可证
└─ .vscodeignore # 打包忽略
🔐 安全与副作用
- 不修改文件内容,仅提供装饰效果
- 不进行网络请求
- 不收集/上报文本数据
❓ 常见问题 FAQ
Q: 为什么某些日文汉字仍被高亮?
A: 若在 strict
模式仍触发,请提供具体字符;可以把该字符从差异表中移除或切换 mode=all
/ simplified
根据需要。
Q: 我想只在可见行执行以提升性能?
A: 可修改源码 for (let lineNum=0; lineNum<doc.lineCount; lineNum++)
为遍历 editor.visibleRanges
中的行。
Q: 想要高亮颜色不同?
A: 改 createTextEditorDecorationType
的 backgroundColor
,或扩展后续加入配置项。
🔄 变更日志 (简)
- 1.0.0: 行级高亮模式 + 严格/启发式/全部模式完善文档
- 0.0.x: 初始功能、差异模式、行级高亮
📄 License
ISC
欢迎提出 PR / Issue 改进字典和性能策略。