如何在Zsh中整合命令执行时间并设置左侧带背景色显示?
配置方案
1. 定义命令执行时间捕获逻辑
在~/.zshrc文件中添加以下代码,用于捕获命令开始时间并计算执行时长:
# 记录命令启动时间 preexec() { cmd_start_time=$(date +%s%N) } # 计算并格式化命令执行时间 precmd() { if [ -n "$cmd_start_time" ]; then cmd_end_time=$(date +%s%N) cmd_elapsed_ns=$((cmd_end_time - cmd_start_time)) cmd_elapsed_ms=$((cmd_elapsed_ns / 1000000)) cmd_elapsed_s=$((cmd_elapsed_ms / 1000)) # 根据执行时长设置不同背景色 if [ $cmd_elapsed_s -lt 5 ]; then # 短耗时:绿色背景+黑色文字 cmd_time_color="%K{green}%F{black}" elif [ $cmd_elapsed_s -lt 30 ]; then # 中等耗时:黄色背景+黑色文字 cmd_time_color="%K{yellow}%F{black}" else # 长耗时:红色背景+白色文字 cmd_time_color="%K{red}%F{white}" fi # 自动切换显示单位(毫秒/秒) if [ $cmd_elapsed_s -eq 0 ]; then cmd_time_display="${cmd_elapsed_ms}ms" else cmd_time_display="${cmd_elapsed_s}s" fi # 拼接带格式的执行时间,最后重置颜色 cmd_time_prompt="${cmd_time_color} ${cmd_time_display} %k%f" unset cmd_start_time else # 无命令执行时清空显示 cmd_time_prompt="" fi }
2. 修改左侧PROMPT,插入执行时间
找到cobolt2主题的PROMPT配置(通常在~/.oh-my-zsh/themes/cobolt2.zsh-theme,或你在~/.zshrc中自定义的PROMPT),将${cmd_time_prompt}插入到PROMPT最左侧。
比如原PROMPT为:
PROMPT='%{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
修改后:
PROMPT='${cmd_time_prompt}%{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
3. 保留右侧日期时间的RPROMPT
确保~/.zshrc中保留原有RPROMPT配置,示例:
RPROMPT='%{$fg[yellow]%}%D{%Y-%m-%d %H:%M:%S}%{$reset_color%}'
4. 使配置生效
保存文件后执行以下命令:
source ~/.zshrc
说明
- 颜色规则:
%K{color}设置背景色,%F{color}设置文字色,%k/%f重置颜色;zsh支持black/red/green等基础色,也可使用十六进制色码(如%K{#00ff00})。 - 耗时阈值可自行调整(当前以5秒、30秒为分界)。
- 执行时间小于1秒时自动显示毫秒,否则显示秒。
内容的提问来源于stack exchange,提问作者Farshad
相关产品推荐
相关产品推荐

