跳转到内容

关键字高亮

Termark 的关键字高亮用于在普通终端输出中标记你关心的内容,例如错误、警告、失败状态、IP、端口、订单号、任务 ID 或自定义业务关键字。

它的定位是“输出观察辅助”:不改变终端里的原始文本,不改变命令执行结果,也不影响远程 shell 的行为。你可以把它理解成 Termark 在终端显示层额外叠加的一层文字颜色标记。

适合解决什么问题

关键字高亮适合把长输出里的重要信息快速凸显出来。

常见场景包括:

  • 在部署、构建、测试输出中突出 ERRORWARNfailedtimeoutdenied 等关键字。
  • 在日志里标记 HTTP 状态码、异常类型、请求 ID、任务 ID、容器名或服务名。
  • 在批量执行命令时,让失败主机、失败步骤或危险操作更容易被看到。
  • 在连接生产环境时,对 rm -rfDROP DATABASEiptablessystemctl 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 应用暂不叠加装饰,例如 vimtophtopless 的全屏界面。
  • 不理解 shell 语法。它不会判断命令是否存在、引号是否闭合、路径是否有效,也不会区分“命令输入”和“程序输出”的语义。
  • 不改变终端缓冲区内容。复制文本、命令执行、日志内容仍然是原始文本。
  • 不会阻止危险命令执行。即使高亮了 rm -rfDROP DATABASE,它也只是视觉提醒。
  • 高亮是正则匹配结果,规则写得过宽会产生误匹配。例如 err 可能匹配到普通单词中的片段。
  • 多条规则重叠时,靠前规则优先。需要先匹配更重要的内容时,把它放在更上面。
  • 当前只设置匹配文本的文字色,不提供背景色、加粗、下划线等样式。

如果你需要稳定识别结构化日志,优先让程序输出 JSON、固定字段或明确前缀,再用关键字高亮匹配这些稳定字段。不要依赖过于模糊的自然语言片段。

示例规则

可以参考 Termark 仓库中的示例规则:

https://github.com/dushixiang/termark/tree/main/highlights

建议从少量规则开始,只高亮真正需要你注意的内容。规则太多、颜色太杂时,反而会降低输出的可读性。

Termark 使用文档