You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:57:26