Zsh主题:脏色和后缀

时间:2017-01-04 22:41:34

标签: zsh oh-my-zsh

我正在尝试自定义Bira zsh主题,以便干净的分支是绿色的,脏分支是红色的,并且最后有一个星号,如此......

custom zsh-theme

我已经得到它,以便颜色根据分支的状态而变化,但无法弄清楚如何让星号最后显示出来。以下是我到目前为止的情况。我非常擅长自定义zsh-theme文件,所以任何帮助都会非常感激!

BaseModel

1 个答案:

答案 0 :(得分:1)

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_COLORGIT_DIRTY_STAR而不是回显,然后在最终回显中使用这些。