How do zsh ansi colour codes work?

前端 未结 4 704
后悔当初
后悔当初 2020-12-13 09:45

I want to make my hostname in my terminal orange. How do I do that?

相关标签:
4条回答
  • 2020-12-13 10:22

    Print

    <ESC>[33mHostname<ESC>[0m
    

    Being the escape character \x1b

    0 讨论(0)
  • 2020-12-13 10:25

    Running the following code in your terminal should tell you whether your terminal supports 256 colors.

    for COLOR in {0..255} 
    do
        for STYLE in "38;5"
        do 
            TAG="\033[${STYLE};${COLOR}m"
            STR="${STYLE};${COLOR}"
            echo -ne "${TAG}${STR}${NONE}  "
        done
        echo
    done
    

    it also shows you the code for each color in the form 38;5;x where x is the code for one of the 256 available colors. Also, note that changing the "38;5" to "48;5" will show you the background color equivalent. You can then use any colors you like to make up the prompt as previously mentioned.

    0 讨论(0)
  • 2020-12-13 10:28

    Your question does not make it clear if you are familiar with the idea of customising the zsh prompt, but are having trouble with colours codes.

    There's plenty of information on the internet. Here's two links:

    • http://www.zshwiki.org/home/config/prompt
    • http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/

    They should cover both customising the prompt and using colour codes to assign colours.

    0 讨论(0)
  • 2020-12-13 10:44

    First off, I'm not sure what terminal you're using or if it will even support the color orange. Mine supports the following: Red, Blue, Green, Cyan, Yellow, Magenta, Black & White. And here's how I get colors in my terminal:


    You need to first load the colors using autoload. I use the following to load the colors and assign them to meaningful names

    #load colors
    autoload colors && colors
    for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
        eval $COLOR='%{$fg_no_bold[${(L)COLOR}]%}'  #wrap colours between %{ %} to avoid weird gaps in autocomplete
        eval BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
    done
    eval RESET='%{$reset_color%}'
    

    You can set the hostname in your prompt using the %m string. So to set, say a red hostname, you'd do

    ${RED}%m${WHITE}\>
    

    which will print something like bneil.so>

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