私にはかなり気に入っているプロンプトがありますzsh
。これは、現在の時刻を評価しprecmd
、それをプロンプトの右側に表示します。
[Floatie:~] ^_^
cbowns% [9:28:31 on 2012-10-29]
しかし、これはその通り私が望んでいること: 以下に示すように、この時間は実際にはコマンドが開始された時間ではなく、前のコマンドが終了した時間です。
[Floatie:~] ^_^
cbowns% date [9:28:26 on 2012-10-29]
Mon Oct 29 09:28:31 PDT 2012
[Floatie:~] ^_^
cbowns% date [9:28:31 on 2012-10-29]
Mon Oct 29 09:28:37 PDT 2012
[Floatie:~] ^_^
cbowns% [9:28:37 on 2012-10-29]
zsh
コマンドを実行するためのフックはありますか?前にシェルは新しいコマンドを開始し、プロンプトのタイムスタンプを更新できますか?(私はzsh プロンプトの時計が常に更新されますか?、でもそれは必要ありません常に更新されました。Enter キーを押したときに更新されました。
(これは^_^
前のコマンドの戻りコードに基づいています。;_;
終了ステータスがゼロ以外の場合は赤で表示されます。)
ベストアンサー1
これは実際には奇妙なハックに頼らなくても可能です。私はこれを.zshrcに持っています
RPROMPT='[%D{%L:%M:%S %p}]'
TMOUT=1
TRAPALRM() {
zle reset-prompt
}
TRAPALRM 関数は TMOUT 秒ごとに (この場合は 1 秒ごとに) 呼び出され、ここでプロンプトの更新を実行します。これは、コマンドの実行が開始されるまで実行されます (また、Enter キーを押す前にプロンプトに入力した内容には影響しません)。常に更新する必要はないことはわかっていますが、それでも、1 行も記述せずに作業を完了できます。
ソース:http://www.zsh.org/mla/users/2007/msg00944.html(2007年のものです!)