如何在 zsh 中只显示当前文件夹和 git 分支和 ~ 主页

How to only show current folder and git branch and ~ for home in zsh

Apple 在其最新 OS 中将 shell 从 bash 更改为 zsh,所以我现在正在尝试修复我的终端提示 :(.

我希望我的提示只包含:

当我使用 bash:

时,我的 .bash_profile 中曾经有这个脚本
# Git branch in prompt.
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}

export PS1="\[3[33;1m\]\W\[3[32m\]$(parse_git_branch)\[3[m\]$ "
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
alias ls='ls -GFh'

我将 .bash_profile 重命名为 .zprofile,但除 ls 部分外,所有这些都不再有效。

如何使这项工作再次生效?

所以在谷歌搜索和查看 zsh 手册的特定部分(可以由 运行 man zshmisc 显示后,我设法解决了这个问题。这是 .zprofile 的代码:

# Load version control information
autoload -Uz vcs_info
precmd() { vcs_info }

# Format the vcs_info_msg_0_ variable
zstyle ':vcs_info:git:*' formats '%b'

# Set up the prompt
setopt PROMPT_SUBST
PROMPT='%1~ %F{green}${vcs_info_msg_0_}%f $ '

%1~ 表示仅显示当前工作目录的最后一个尾随部分,主目录将替换为 ~.

这是我的 .zshrc 基于谢尔盖的出色回答。它通过添加更多颜色和冒号分隔的分支名称(仅在可用时)来增强它。

这对于 JetBrains IDE(IntelliJ/PhpStorm/WebStorm)中的集成终端也能顺利运行。

# load version control information
autoload -Uz vcs_info
precmd() { vcs_info }

# format vcs_info variable
zstyle ':vcs_info:git:*' formats ':%F{green}%b%f'

# set up the prompt
setopt PROMPT_SUBST
PROMPT='%F{blue}%1~%f${vcs_info_msg_0_} $ '