有哪些Zsh插件可自动格式化/折叠终端中展示的JSON格式日志?
解决方案
目前没有专门针对该需求的开箱即用Zsh插件,但可以通过Zsh自定义配置+通用工具组合的方式,100%实现自动识别JSON日志、折叠预览、点击展开、语法高亮的全部需求:
方案1:交互式终端适配方案(推荐,支持点击展开)
该方案适配WezTerm、iTerm2、Windows Terminal等支持OSC8超链接协议的主流终端,无需安装完整插件,只需在.zshrc中添加自定义配置即可:
- 先安装必备工具:
jq:JSON格式化、高亮、字段提取工具fx:交互式JSON查看器,支持层级折叠、搜索、高亮
- 把以下wrapper函数添加到
.zshrc并执行source ~/.zshrc生效:
# JSON日志自动折叠包装函数 json-fold-run() { # 接管命令的标准输出/错误流 "$@" 2>&1 | while IFS= read -r line; do # 正则匹配完整JSON对象/数组行 if [[ $line =~ ^\{.*\}$ ]] || [[ $line =~ ^\[.*\]$ ]]; then # 输出折叠预览,默认取核心字段+前50字符兜底 echo -n "📦 *折叠JSON日志*: " echo "$line" | jq -c 'del(._meta) | {level, type, msg}' 2>/dev/null || echo "${line:0:50}..." # 插入终端可点击链接,点击自动调用fx展开完整高亮JSON echo -e "\033]8;;echo '$line' | fx\a👉 点击查看完整JSON\033]8;;\a" else # 非JSON行直接原样输出 echo "$line" fi done }
- 使用方式:启动服务器时在命令前加
json-fold-run即可,示例:
json-fold-run ./your-server-start-command
方案2:纯Zsh高亮+快捷键展开方案
如果不需要点击交互,也可以配合zsh-syntax-highlighting插件实现JSON行专属高亮,绑定快捷键触发展开:
- 给
zsh-syntax-highlighting添加JSON行匹配规则,加到.zshrc即可自动高亮所有JSON输出行:
ZSH_HIGHLIGHT_PATTERNS+=('^\{.*\}$' 'fg=brightblue,bg=235') ZSH_HIGHLIGHT_PATTERNS+=('^\[.*\]$' 'fg=brightblue,bg=235')
- 绑定Zsh自定义快捷键,选中JSON行后按
Alt+j即可自动调用jq格式化展开选中的JSON内容。
内容的提问来源于stack exchange,提问作者Emidomenge
相关产品推荐
相关产品推荐

