我需要一种.zshrc在每次执行命令时自动获取源的方法。PROMPT每次执行命令时都需要更新,以便在提示中显示相关信息。
我使用Watson cli来跟踪时间。在我之前的 bash 设置中,我在提示符 ( $PS1)前面加上了一个符号,指示计时器是否正在运行(红色/绿色)。我用 Oh My Zsh 模仿了这个功能,如下(在主题文件中):
WATSON_DIR="$HOME/Library/Application Support/watson"
watson_status() {
local txtred="${fg_bold[red]}"
local txtgrn="${fg_bold[green]}"
local txtrst="${reset_color}"
# Started
local status_color="$txtgrn"
# Stopped
if [[ $(cat "$WATSON_DIR/state") == '{}' ]]; then
status_color="$txtred"
fi
echo -e "$status_color""?""$txtrst"
}
PROMPT="??? %{$(watson_status) $fg_bold[green]%}%~%{$reset_color%}$(git_prompt_info) ? %{$FG[130]%}%*%{$reset_color%}
??? $ "
Run Code Online (Sandbox Code Playgroud)
该图标将指示 .zshrc 执行时状态的颜色。例如,如果计时器正在运行并且图标正确指示为绿色,则停止计时器不会导致图标变为红色。为了看到图标改变颜色,我必须获取 .zshrc。
这表示watson_status()每次执行命令时都需要运行该函数,以给出命令执行时的最新状态
我最近将一些提示代码从 bash 移植到 zsh - 在 OSX Big Sur 上 - 这对我来说是两个重要的“要知道的事情”:
setopt PROMPT_SUBST到您的 .zshrc。这“允许在提示中使用功能”我用来确认它工作的最简单的例子:
# print_epoch() { date '+%s' }
# this is what you want
# export PS1='$(print_epoch) > '
# this is not what you want
# export PS1="$(print_epoch) > "
Run Code Online (Sandbox Code Playgroud)
另外值得注意的是 PS1 和 PROMPT 是可以互换的
额外的:
虽然我们在这里分享的是我的用户、目录和 git 分支提示的相当少的回声,带有一些颜色和漂亮的叶子:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
setopt PROMPT_SUBST
autoload -U colors && colors
export PROMPT='%n %~ %F{blue}$(parse_git_branch)%f > '
Run Code Online (Sandbox Code Playgroud)
注意到:
文档:http: //zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |