如何在 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" 下查看完整列表。
我喜欢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" 下查看完整列表。