zsh 提示符和主机名
zsh prompt and hostname
我在.zshrc中使用如下提示:
PROMPT="%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%1~ %{$reset_color%}%# "
当我打开终端时,我看到这个提示:
zoltan@zoltan-Macbook-Pro ~ %
是否可以删除主机名中的文本 "zoltan"?我想让它看起来像这样:
zoltan@Macbook-Pro ~ %
如有任何建议,我们将不胜感激。谢谢!
有点乱,但是你可以假装%m
是一个参数并使用参数扩展从主机名中去掉zoltan
:
PROMPT="...${${(%):-%m}#1} ..."
一点解释。首先,您创建一个实际上没有参数名称的 "parameter" 扩展;它只使用您提供的文本作为 "value":
${:-%m}
接下来,添加 %
扩展标志,以便处理在值中找到的任何提示符转义。
${(%):-%m}
最后,接下来是使用 #
运算符从字符串中删除前缀的最终扩展:
${${(%):-%m}#zoltan-}
您可以一点一点地构建提示(并使用 zsh
的提示转义来处理颜色变化,而不是显式嵌入终端控制序列)。
PROMPT="%F{magenta}%n%f" # Magenta user name
PROMPT+="@"
PROMPT+="%F{blue}${${(%):-%m}#zoltan-}%f" # Blue host name, minus zoltan
PROMPT+=" "
PROMPT+="%F{yellow}%1~ %f" # Yellow working directory
PROMPT+=" %# "
如果您使用的是 OhMyZsh,如果您想要 PS1/PROMPT 中的用户名和主机名,则可以在 .zshrc 的底部添加一行:
export PROMPT='%(!.%{%F{yellow}%}.)$USER@%{$fg[white]%}%M ${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
尽情享受 ;)
我在自己的通用提示中偶然发现了这个问题和 from @chepner inspired me to remove the .local
from the %M
(fully qualified machine hostname)。
在他们的案例中,他们做了:
${${(%):-%m}#zoltan-}
就我而言,我做了:
${${(%):-%M}%.local}
注意:
在shellsubstring removal
#
表示“从左边开始trim”
%
表示“从右边开始trim”
你可以记住哪个是哪个,因为 #
和 %
在 $
的左边和右边,$
是你用于 ${parameter_substitution)
的字符。
在我的例子中,我在 .zshrc 中设置了 PS1。查找“%m”——这对应于您在提示中看到的主机名。把它换成你想要的。让我用自定义替换“%m”。
旧
autoload -U colors && colors
PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
新
autoload -U colors && colors
PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}CUSTOM %{$fg[yellow]%}%~ %{$reset_color%}%% "
我在.zshrc中使用如下提示:
PROMPT="%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%1~ %{$reset_color%}%# "
当我打开终端时,我看到这个提示:
zoltan@zoltan-Macbook-Pro ~ %
是否可以删除主机名中的文本 "zoltan"?我想让它看起来像这样:
zoltan@Macbook-Pro ~ %
如有任何建议,我们将不胜感激。谢谢!
有点乱,但是你可以假装%m
是一个参数并使用参数扩展从主机名中去掉zoltan
:
PROMPT="...${${(%):-%m}#1} ..."
一点解释。首先,您创建一个实际上没有参数名称的 "parameter" 扩展;它只使用您提供的文本作为 "value":
${:-%m}
接下来,添加 %
扩展标志,以便处理在值中找到的任何提示符转义。
${(%):-%m}
最后,接下来是使用 #
运算符从字符串中删除前缀的最终扩展:
${${(%):-%m}#zoltan-}
您可以一点一点地构建提示(并使用 zsh
的提示转义来处理颜色变化,而不是显式嵌入终端控制序列)。
PROMPT="%F{magenta}%n%f" # Magenta user name
PROMPT+="@"
PROMPT+="%F{blue}${${(%):-%m}#zoltan-}%f" # Blue host name, minus zoltan
PROMPT+=" "
PROMPT+="%F{yellow}%1~ %f" # Yellow working directory
PROMPT+=" %# "
如果您使用的是 OhMyZsh,如果您想要 PS1/PROMPT 中的用户名和主机名,则可以在 .zshrc 的底部添加一行:
export PROMPT='%(!.%{%F{yellow}%}.)$USER@%{$fg[white]%}%M ${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
尽情享受 ;)
我在自己的通用提示中偶然发现了这个问题和 .local
from the %M
(fully qualified machine hostname)。
在他们的案例中,他们做了:
${${(%):-%m}#zoltan-}
就我而言,我做了:
${${(%):-%M}%.local}
注意:
在shellsubstring removal
#
表示“从左边开始trim”%
表示“从右边开始trim”
你可以记住哪个是哪个,因为 #
和 %
在 $
的左边和右边,$
是你用于 ${parameter_substitution)
的字符。
在我的例子中,我在 .zshrc 中设置了 PS1。查找“%m”——这对应于您在提示中看到的主机名。把它换成你想要的。让我用自定义替换“%m”。
旧
autoload -U colors && colors
PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
新
autoload -U colors && colors
PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}CUSTOM %{$fg[yellow]%}%~ %{$reset_color%}%% "