将终端中的 bash 提示符转换为 zsh

将终端中的 bash 提示符转换为 zsh

我最近更新了终端以使用 zsh,这样做后,新终端窗口上的提示现在显示:\[\033[1;92m\]\h:\[\033[0m\] \[\033[0;34m\][\W]\[\033[0m\] \[\033[0;31m\]\u$\[\033[0m\]而不是我之前设置的自定义提示。

对于更新 bash 配置文件以在终端中再次显示自定义提示或清理默认终端提示以使用基于 zsh 的配置文件显示所需的设备名称、路径等有什么建议吗?

答案1

提示转义序列不同巴什桀骜。功能相似,但语法完全不同。您需要将 bash 设置转换为 zsh 语法。

PS1在这两种情况下,提示都会进入变量。 (还有其他可能性,但您不需要使用它们。)设置进入.zshrc。因此,您需要将这样的行添加到您的.zshrc

PS1=$'%{\e[1;92m%}%m:…'

我开始翻译: bash 的\[…\]零宽度结构变成了 zsh , bash 中%{…%}表示的转义字符在 zsh 中,主机名在 bash 和zsh 中......\033$'\e'\h%m

答案2

\e[92m是在支持 16 种(或更多)ANSI 颜色的终端上将前景色设置为颜色 10(亮绿色)的序列。这是例如echoti setaf 10(terminfo)或(termcap)(也或取决于系统)在引用此类终端时发送的序列。echotc AF 10tput setaf 10tput AF 10$TERM

\e[1m是一个大胆的

zsh迅速扩张中,

  • %B它转动大胆的打开,%b将其关闭。
  • %10F将前景色设置为10,%F{#00ff00}对于RGB规范(对于支持它的终端,zmodload zsh/nearcolor可以用于从调色板中获取最接近的颜色,对于不支持它的终端),%f重置为默认前景色。%F{blue}适用于基本的 8 种较低颜色 ( \e[3xm)。
  • 相当于 bash 的\h, \W,\u应该是%m, %~,%n就像在 tcsh 中一样

所以相当于bash的

\[\033[1;92m\]\h:\[\033[0m\] \[\033[0;34m\][\W]\[\033[0m\] \[\033[0;31m\]\u$\[\033[0m\]

应该是这样的:

%10F%B%m: %b%4F[%~] %1F%n$ %f

答案3

在不使用这么多令人困惑的反斜杠的情况下设置提示的更简单方法Zsh是使用tput命令。例如,以下是将提示字符串设置为粗体且前景色为黄色的方法:

promptText="megh$ "
PS1="%{$(tput bold)$(tput setaf 3)%}$promptText%{$(tput sgr0)%}"

为了转义不可打印的字符,需要将它们放入%{ ... %}Zsh 中。对于 Bash,请将它们放在里面\[ ... \]\001 ... \002改为。

更多解释这里

相关内容