zsh prompt and hostname

前端 未结 2 1623
执念已碎
执念已碎 2021-02-19 09:26

I use the following prompt in .zshrc:

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

When

相关标签:
2条回答
  • 2021-02-19 09:37

    It's a bit of a mess, but you can pretend the %m is a parameter and use parameter expansion to strip the zoltan from the host name:

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

    A little explanation. First, you create a "parameter" expansion that doesn't actually have a parameter name; it just uses the text you provide as the "value":

    ${:-%m}
    

    Next, add the % expansion flag so that any prompt escapes found in the value are processed.

    ${(%):-%m}
    

    Finally, next it in a final expansion that uses the # operator to remove a prefix from the string:

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

    You can tame your prompt a bit by building up piece by piece (and use zsh's prompt escapes to handle the color changes, rather than embedding terminal control sequences explicitly).

    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+=" %# "
    
    0 讨论(0)
  • 2021-02-19 09:59

    If you're using OhMyZsh, this is one line to add at the bottom of you .zshrc if you want the user and hostname in your PS1/PROMPT :

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

    Enjoy ;)

    0 讨论(0)
提交回复
热议问题