如何在 zsh 中获取 "rainbow prompt"?

How can I get the "rainbow prompt" in zsh?

我喜欢bash中所谓的"rainbow prompt":

我是这样制作的:

export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\$ \[$(tput sgr0)\]"

不幸的是,该代码在 zsh 中不起作用(这是我的主要 shell)。

如何在 zsh 中实现相同的结果?

zsh 中要简单得多,因为 shell 提供了 terminal-independent 转义序列来设置颜色。例如:

PS1='%B[%F{red}%n%F{green}@%F{blue}%m %F{purple}%~] %# %b%f'
  • %B/%b - 加粗 on/off
  • %F{...} - 设置前景色。您可以为基本颜色使用颜色名称,或者为具有较大调色板的终端使用 %F{173} 等整数索引。
  • %f - 关闭对前景色的更改(即使用默认颜色)
  • %n - 用户名
  • %m - 主机名到第一个 .
  • %~ - 目录名
  • %# - # 对于 root,% 对于普通用户(如果您仍然想要 $ 而不是 %,这只是一个快捷方式对于一般条件序列 %(!.#.%%),您可以将其替换为 %(!.#.$),如在 Shell 状态下的 man zshmisc 所示。)

请参阅 man zshmisc,在 "EXPANSION OF PROMPT SEQUENCES" 下查看完整列表。