直接用 diff --color=always 配合 less -R 实现终端高亮;Python difflib HTML 输出需字符串替换内联样式;pt-table-sync 无原生高亮,需外挂 grep;VS Code 需 Highlight 扩展配正则。
PostgreSQL pg_dump + diff 时如何控制新增/删除行的颜色
直接改 diff 输出颜色就行,不用动数据库或工具链。默认黑白输出是因为终端没启用 color,或者你用了 --no-color 类参数。
- 用
diff --color=always强制着色,再 pipe 给less -R(不是less -r)才能看到红绿高亮 - Linux/macOS 默认的
diff支持--color=always,但 Windows 的 Git Bash 自带 diff 可能不认,优先用git diff --no-index替代 - 别在脚本里硬写 ANSI 转义码——
diff自己会根据终端类型选合适的颜色序列,手动拼容易崩
用 Python difflib 生成 HTML 差异报告时自定义增删样式
difflib.HtmlDiff 默认用 color:#ba2be2(紫)标新增、#ba2b2b(红)标删除,但不提供直接 API 改颜色,得绕一下。
- 调用
make_file()后,对生成的 HTML 字符串做一次.replace():把style="background-color:#ba2be2"换成你想要的#4caf50 - 注意:HTML 中 class 名如
diff_add是固定的,但内联 style 是硬编码进输出里的,不能靠 CSS 覆盖——除非你重写_format_line()方法(不推荐) - 如果用
difflib.unified_diff生成文本再转 HTML,反而更灵活:自己控制每行加什么<span class="add"></span>,再配 CSS
MySQL 表结构比对工具 pt-table-sync 的高亮限制在哪
pt-table-sync 本身不输出带颜色的差异,它只打印 SQL 语句和 --dry-run 的变更摘要。所谓“高亮”其实是后续人工看日志时加的。
- 它的输出是纯文本流,没有 color 控制字符,也没 class 或 span;想高亮只能外挂
grep --color=always或用awk匹配ALTER TABLE.*ADD COLUMN这类关键词 - 注意:
pt-table-sync --print和--dry-run输出格式略有不同,前者更接近可执行 SQL,后者带注释说明意图,匹配规则要分开写 - 别指望用
--charset或--collate参数影响显示——它们只管数据传输,不管输出渲染
VS Code 中对比两个 SQL 文件时怎么让 ADD/ DROP 行自动变色
VS Code 原生不识别 “这是表结构差异”,它只按语法高亮。要实现增删行级着色,得靠扩展 + 正则匹配。
- 装
Highlight扩展,配置highlight.regexes:比如用^\s*ADD COLUMN.*$匹配新增字段行,设为绿色背景 - 正则必须锚定行首(
^)和行尾($),否则跨行误匹配;SQL 里可能有换行缩进,建议先用sql-formatter统一格式再比对 - 别用
diff视图里的颜色——那是 Git diff 的统一逻辑,无法单独针对 DDL 关键字定制;得切到普通文本对比模式再上高亮规则










