zshでプロンプトの時刻(タイムスタンプ)に常に実際の時刻を表示させる

個人的にクライアントのシェルはzshを使ってて、右側のプロンプト(RPROMPT)に時刻表示をさせるようにしている。
で、この時刻をプロンプトが表示された時刻ではなく、常にシステム時刻が表示されるようにしたいなと思い調べてみたところ、以下のような内容を.zshrcに記述することで実現出来た。

setopt prompt_subst                                                                                                                     
TMOUT=1
TRAPALRM() {zle reset-prompt}
    
RPROMPT="%F{white} %D{%Y-%m-%d %H:%M:%S} %f"
Sponsored Links

ちなみに、実際の画面は以下のようになる。
何も操作しなくても、右側のプロンプトの時刻が1秒ごとに更新されている。

 

ちなみに、タブ補完で選択する際にプロンプトを再描画されてしまうと候補が見えなくなってしまうので、もし組み合わせて使う場合は以下のようにTRAPALRMを定義する。

TRAPALRM() {
    if [ "$WIDGET" != "expand-or-complete" ]; then
        zle reset-prompt
    fi
}

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*