shell - zsh 提示和主机名

标签 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 ~ %

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

最佳答案

有点乱,但你可以假装%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+=" %# "

关于shell - zsh 提示和主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30199068/

相关文章:

linux - 在 bash 中创建空文件的简写在 zsh 中无法正常工作

image - 在图像上使用特定大小的单元格绘制网格

Nginx 反向代理,只允许从主机名而不是 ip 连接

sockets - .gethostbyaddr()不适用于所有设备。为什么? (Python)

zsh - RVM 在 ZSH 中显示 Ruby 版本

shell - 伯恩 shell : send arguments $2 to $N to variadic function?

bash - 将变量从一个 shell 脚本导出到 bash 中的另一个脚本

bash - 想要创建一个脚本来删除桌面上的所有屏幕截图

Java SSL : "fatal error: 80: ... unwrapping net record" after adding the HTTPS EndpointIdentificationAlgorithm

xml - 当我添加hive-site.xml时,Hive Shell无法打开