gpt4 book ai didi

Zsh 随时间更新提示

转载 作者:行者123 更新时间:2023-12-03 14:53:47 27 4
gpt4 key购买 nike

我正在尝试使用写入命令的时间更新以前的命令提示符。

用我写的代码,输入以下命令

[--:--] costam:~ $ echo "Wrote this at 10:20"

并在五分钟后启动它,结果如下:

[10:25] costam:~ $ echo "Wrote this at 10:20"
Wrote this at 10:20

zsh-theme 中实现此目的的代码如下

PROMPT='[--:--] %{$fg[red]%}$USER:%{$reset_color%}%{$fg[green]%}%c%{$reset_color%}$(git_prompt_info) %(!.#.$) '

preexec () {
DATE=`date +"%H:%M"`
echo -e "\r\033[1A[${DATE}]"
}

问题是当命令超过一行或者有一个激活的虚拟环境时。在这种情况下,提示不会在它应该覆盖的地方被覆盖,结果如下:

# Multiline
[--:--] costam:~ (master) $ cat ~/.oh-my-zsh/custom/themes/davever
[10:20]-theme

# Virtualenv
[10:20]env) [--:--] costam:~ (master) $ echo "Broken"
Broken

我想到的一个解决方案是在 preexec() 中找到当前提示。然后替换 [--:--]与当前时间,但我不知道如何或是否甚至可能获得当前提示。

欢迎任何其他解决方案,只要时间以相同的方式(或非常相似)打印,而不是例如使用 RPROMT 在右侧打印或在新提示中打印。

谢谢!

最佳答案

您可以使用 %T 获取提示序列中的当前时间。
所以,你可以删除 preexec函数并将其用作提示:

PROMPT='[%T] %{$fg[red]%}$USER:%{$reset_color%}%{$fg[green]%}%c%{$reset_color%}$(git_prompt_info) %(!.#.$) '

关于Zsh 随时间更新提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61405098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com