Zsh 主题:肮脏的颜色和后缀
Zsh theme: dirty color and suffix
我正在尝试自定义 Bira zsh-theme,以便干净的分支是绿色的,脏的分支是红色的,最后有一个星号,就像这样...
我已经得到它,所以颜色会根据分支的状态而变化,但无法弄清楚如何让星号出现在最后。以下是我到目前为止所拥有的。我对自定义 zsh-theme 文件还很陌生,所以非常感谢任何帮助!
# ZSH Theme - Modified from bira.zsh-theme
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
if [[ $UID -eq 0 ]]; then
local user_host='%{$terminfo[bold]$fg[red]%}%n@%m%{$reset_color%}'
local user_symbol='#'
else
local user_host='%{$terminfo[bold]$fg[cyan]%}%n@%m%{$reset_color%}'
local user_symbol='$'
fi
local current_dir='%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}'
local git_branch='$(git_prompt_info)%{$reset_color%}'
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
PROMPT="
╭─${user_host} ${current_dir} ${git_branch}
╰─%B${user_symbol}%b "
RPS1="%B${return_code}%b"
ZSH_THEME_GIT_PROMPT_PREFIX="‹"
ZSH_THEME_GIT_PROMPT_SUFFIX="›$reset_color"
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]"
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]"
parse_git_dirty
函数定义在lib/git.zsh
通过将该函数复制到您的文件中并稍作修改,我们可以实现您想要的:
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
# Checks if working tree is dirty
local STATUS=''
local FLAGS
FLAGS=('--porcelain')
if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
FLAGS+='--ignore-submodules=dirty'
fi
if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
FLAGS+='--untracked-files=no'
fi
STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1)
fi
if [[ -n $STATUS ]]; then
GIT_PROMPT_COLOR="$ZSH_THEME_GIT_PROMPT_DIRTY"
GIT_DIRTY_STAR="*"
else
GIT_PROMPT_COLOR="$ZSH_THEME_GIT_PROMPT_CLEAN"
unset GIT_DIRTY_STAR
fi
echo "$GIT_PROMPT_COLOR$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$GIT_DIRTY_STAR$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
与库函数的唯一区别是分配GIT_PROMPT_COLOR
和GIT_DIRTY_STAR
而不是回显,然后在最后的回显中使用它们。
我正在尝试自定义 Bira zsh-theme,以便干净的分支是绿色的,脏的分支是红色的,最后有一个星号,就像这样...
我已经得到它,所以颜色会根据分支的状态而变化,但无法弄清楚如何让星号出现在最后。以下是我到目前为止所拥有的。我对自定义 zsh-theme 文件还很陌生,所以非常感谢任何帮助!
# ZSH Theme - Modified from bira.zsh-theme
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
if [[ $UID -eq 0 ]]; then
local user_host='%{$terminfo[bold]$fg[red]%}%n@%m%{$reset_color%}'
local user_symbol='#'
else
local user_host='%{$terminfo[bold]$fg[cyan]%}%n@%m%{$reset_color%}'
local user_symbol='$'
fi
local current_dir='%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}'
local git_branch='$(git_prompt_info)%{$reset_color%}'
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
PROMPT="
╭─${user_host} ${current_dir} ${git_branch}
╰─%B${user_symbol}%b "
RPS1="%B${return_code}%b"
ZSH_THEME_GIT_PROMPT_PREFIX="‹"
ZSH_THEME_GIT_PROMPT_SUFFIX="›$reset_color"
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]"
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]"
parse_git_dirty
函数定义在lib/git.zsh
通过将该函数复制到您的文件中并稍作修改,我们可以实现您想要的:
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
# Checks if working tree is dirty
local STATUS=''
local FLAGS
FLAGS=('--porcelain')
if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
FLAGS+='--ignore-submodules=dirty'
fi
if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
FLAGS+='--untracked-files=no'
fi
STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1)
fi
if [[ -n $STATUS ]]; then
GIT_PROMPT_COLOR="$ZSH_THEME_GIT_PROMPT_DIRTY"
GIT_DIRTY_STAR="*"
else
GIT_PROMPT_COLOR="$ZSH_THEME_GIT_PROMPT_CLEAN"
unset GIT_DIRTY_STAR
fi
echo "$GIT_PROMPT_COLOR$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$GIT_DIRTY_STAR$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
与库函数的唯一区别是分配GIT_PROMPT_COLOR
和GIT_DIRTY_STAR
而不是回显,然后在最后的回显中使用它们。