zsh提示符和主机名

时间:2015-05-12 18:44:32

标签: shell zsh hostname zshrc

我在.zshrc中使用以下提示符:

PROMPT="%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%1~ %{$reset_color%}%# "

当我打开终端时,我看到了这个提示:

zoltan@zoltan-Macbook-Pro ~ %

是否可以删除文本" zoltan"在主机名?我想让它看起来像这样:

zoltan@Macbook-Pro ~ %

任何建议都将不胜感激。谢谢!

4 个答案:

答案 0 :(得分:6)

这有点乱,但您可以假装%m是参数并使用参数扩展从主机名中删除zoltan

PROMPT="...${${(%):-%m}#1} ..."

一点解释。首先,创建一个实际上没有参数名称的“参数”扩展;它只是使用您提供的文本作为“值”:

${:-%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+=" %# "

答案 1 :(得分:3)

如果您正在使用OhMyZsh,如果您想在PS1 / PROMPT中使用用户名和主机名,则可以在.zshrc底部添加一行:

export PROMPT='%(!.%{%F{yellow}%}.)$USER@%{$fg[white]%}%M ${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'

享受;)

答案 2 :(得分:0)

我偶然发现了这个问题,@chepner 的 wonderfully informative answer 启发我从我自己的通用提示中的 .local (fully qualified machine hostname) 中删除 %M

就他们而言,他们做到了:

${${(%):-%m}#zoltan-}

就我而言,我做到了:

${${(%):-%M}%.local}

注意:

在外壳 substring removal

  • # 表示“从左侧修剪”
  • % 表示“从右侧修剪”

您可以记住哪个是哪个,因为 #% 位于 $ 的左侧和右侧,{{1}} 是您用于 ${parameter_substitution) 的字符。

答案 3 :(得分:0)

就我而言,我在 .zshrc 中设置了 PS1。查找 '%m' - 这对应于您在提示中看到的主机名。更换它你想要的。让我用 CUSTOM 替换 '%m'。


enter image description here

autoload -U colors && colors
PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "

enter image description here

autoload -U colors && colors
PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[cyan]%}CUSTOM %{$fg[yellow]%}%~ %{$reset_color%}%% "