如何在zsh中仅显示当前文件夹、git分支和家目录(~)?

8

苹果在最新的操作系统中将shell从bash更改为zsh,因此我现在正在尝试修复我的终端提示 :(。

我希望我的提示只包含以下内容:

  • 我所在的当前目录(不包含完整路径)
  • 没有用户名和计算机名
  • 当前git分支(以绿色显示)
  • 如果我在主目录,则为~
  • $结尾并有一个空格

我以前在使用bash时,在我的.bash_profile中有这个脚本:

# Git branch in prompt.
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

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

我将.bash_profile重命名为.zprofile,但现在除了ls命令外,其他命令都无法使用。请问如何使其重新生效?

你应该查看zshall(1)中的“提示序列扩展”和“简单提示转义”部分,以及Git的“vcs”扩展。 - bk2204
@bk2204 但是 zshall(1) 是什么?我该如何查看它的章节? - Sergey Zakharov
这是一个手册页面。您可以调用“man zshall”。 - bk2204
苹果将默认 shell 更改为 zsh;如果您喜欢,可以切换回 bash。我猜在未来,苹果将停止在操作系统中提供 bash 的版本,但即使如此,您仍然可以自己安装 bash 并将其用作默认 shell。 - chepner
1
提示信息可以在man zshmisc中找到;man zshall提供了所有文档,需要花费很多时间去整理。 - chepner
显示剩余2条评论
2个回答

10

所以在更多的谷歌搜索和查看特定部分的 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~ 表示只显示当前工作目录的最后一个尾随组件,并将主目录替换为~


如果您想删除非Git文件夹提示结尾的 "double space",您可以将 zstyle ':vcs_info:git:*' formats '%b' 更改为 zstyle ':vcs_info:git:*' formats '%b '(在“b”前面添加额外的空格)...并将 PROMPT ='%1〜%F {green} $ {vcs_info_msg_0_} %f $'更改为PROMPT ='%1〜%F {green} $ {vcs_info_msg_0_} %f $'`(删除“$”之前的额外空格)。 - markhops

2
这是基于Sergey的优秀答案修改的我的.zshrc文件。它通过添加更多颜色和冒号分隔的分支名称(仅在可用时)来增强它。
这也适用于JetBrains IDE(IntelliJ / PhpStorm / WebStorm)中的集成终端。 enter image description here
# 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_} $ '

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接