关键字高亮
Termark 的关键字高亮用于在普通终端输出中标记你关心的内容,例如错误、警告、失败状态、IP、端口、订单号、任务 ID 或自定义业务关键字。
它的定位是“输出观察辅助”:不改变终端里的原始文本,不改变命令执行结果,也不影响远程 shell 的行为。你可以把它理解成 Termark 在终端显示层额外叠加的一层文字颜色标记。
适合解决什么问题
关键字高亮适合把长输出里的重要信息快速凸显出来。
常见场景包括:
- 在部署、构建、测试输出中突出
ERROR、WARN、failed、timeout、denied等关键字。 - 在日志里标记 HTTP 状态码、异常类型、请求 ID、任务 ID、容器名或服务名。
- 在批量执行命令时,让失败主机、失败步骤或危险操作更容易被看到。
- 在连接生产环境时,对
rm -rf、DROP DATABASE、iptables、systemctl stop等高风险命令或输出做视觉提醒。 - 在输出大量 IP、端口、路径时,用不同颜色区分不同类型的信息。
关键字高亮不是报警系统,也不会阻止命令执行。它只负责让匹配到的文本更醒目。
和 Bash/Zsh/Fish 高亮的区别
Bash、Zsh、Fish 里的高亮通常指 shell 输入高亮或命令行语法高亮。例如 Fish 自带命令行高亮,Zsh 可以通过插件高亮当前正在输入的命令。
Termark 的关键字高亮和它们不是同一类功能。
| 对比项 | Termark 关键字高亮 | Bash/Zsh/Fish 高亮 |
|---|---|---|
| 作用位置 | Termark 终端显示层 | 远程或本地 shell 内部 |
| 主要对象 | 已经输出到终端的普通文本 | 当前正在输入的命令行 |
| 判断方式 | 按用户配置的正则表达式匹配文本 | 通常理解 shell 语法、命令、路径、引号等结构 |
| 生效范围 | Termark 中的终端会话 | 安装和配置了对应 shell 功能的环境 |
| 是否影响 shell | 不影响 shell、命令、提示符或远程环境 | 需要修改 shell 配置或安装插件 |
| 典型用途 | 突出日志、错误、状态码、危险词、业务关键字 | 提示命令是否存在、路径是否有效、语法是否闭合 |
简单来说:
- 如果你想让正在输入的命令按语法变色,应该使用 Bash/Zsh/Fish 相关插件或配置。
- 如果你想让命令执行后的输出、日志、批量执行结果里的某些文字更醒目,适合使用 Termark 关键字高亮。
两者可以同时使用。Shell 高亮负责输入阶段,Termark 关键字高亮负责输出观察阶段。
局限
关键字高亮有明确边界:
- 只对普通终端输出叠加装饰。全屏 TUI 应用暂不叠加装饰,例如
vim、top、htop、less的全屏界面。 - 不理解 shell 语法。它不会判断命令是否存在、引号是否闭合、路径是否有效,也不会区分“命令输入”和“程序输出”的语义。
- 不改变终端缓冲区内容。复制文本、命令执行、日志内容仍然是原始文本。
- 不会阻止危险命令执行。即使高亮了
rm -rf或DROP DATABASE,它也只是视觉提醒。 - 高亮是正则匹配结果,规则写得过宽会产生误匹配。例如
err可能匹配到普通单词中的片段。 - 多条规则重叠时,靠前规则优先。需要先匹配更重要的内容时,把它放在更上面。
- 当前只设置匹配文本的文字色,不提供背景色、加粗、下划线等样式。
如果你需要稳定识别结构化日志,优先让程序输出 JSON、固定字段或明确前缀,再用关键字高亮匹配这些稳定字段。不要依赖过于模糊的自然语言片段。
示例规则
可以参考 Termark 仓库中的示例规则:
https://github.com/dushixiang/termark/tree/main/highlights
建议从少量规则开始,只高亮真正需要你注意的内容。规则太多、颜色太杂时,反而会降低输出的可读性。