【问题标题】:How to only show current folder and git branch and ~ for home in zsh如何在 zsh 中仅显示当前文件夹和 git 分支以及 ~ 为 home
【发布时间】:2020-03-19 10:14:59
【问题描述】:

Apple 在其最新操作系统中将 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) 中的 EXPANSION OF PROMPT SEQUENCES 和 SIMPLE PROMPT ESCAPES 部分,以及 Git 的 vcs 扩展。
  • @bk2204 但zshall(1) 是什么?如何查看其部分?
  • 这是一个手册页。你会调用man zshall
  • Apple 将 default shell 更改为zsh;如果你愿意,你可以切换回bash。将来,我怀疑 Apple 将停止发布带有操作系统的 bash 版本,但即便如此,您应该能够自行安装 bash 并将其用作默认 shell。
  • 提示的东西具体可以从man zshmisc获得; man zshall 为您提供所有文档,有很多内容需要整理。

标签: git macos terminal zsh prompt


【解决方案1】:

因此,经过更多的谷歌搜索并查看了 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文件夹提示符末尾的“双倍空格”,可以将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$ '(删除 '$' 之前的多余空格)
【解决方案2】:

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

这也适用于 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_} $ '

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2021-01-25
    相关资源
    最近更新 更多