zshの右プロンプトにコマンド開始終了時刻を表示
コマンドの開始時刻と終了時刻を右プロンプトに表示したくなった。
$ 15:00:00 - # 15時00分00秒に sleep 30 を入力開始 $ sleep 30 15:00:00 - # 10秒掛けて sleep 30 と打ち込んだ $ sleep 30 15:00:00 - 15:00:10 # 15時00分10秒にエンターキー押した # 30秒経過 $ 15:00:40 - # 15時00分40秒にコマンド終了
これを実現するには、以下のコードを ~/.zshrc
に書き込めば実現できる。だいぶ試行錯誤した。
export PREV_COMMAND_END_TIME export NEXT_COMMAND_BGN_TIME function show_command_end_time() { PREV_COMMAND_END_TIME=`date "+%H:%M:%S"` RPROMPT="${PREV_COMMAND_END_TIME} - " } autoload -Uz add-zsh-hook add-zsh-hook precmd show_command_end_time show_command_begin_time() { NEXT_COMMAND_BGN_TIME=`date "+%H:%M:%S"` RPROMPT="${PREV_COMMAND_END_TIME} - ${NEXT_COMMAND_BGN_TIME}" zle .accept-line zle .reset-prompt } zle -N accept-line show_command_begin_time
ググったら似たような設定してる人が国内外に散見されるのだが、 開始時刻と終了時刻の両方をUPDATEしている例が見つからなかった。 わりと便利だと思う。使うといいよ~