ZSHのディレクトリ深度ベースのカラーフォルダ

ZSHのディレクトリ深度ベースのカラーフォルダ

現在編集中です。不可知論者トピック:ああ、私の好みに応じて、ステータスバーのディレクトリ名に深さに基づいて色を付ける方法があるかどうか疑問に思います。まるで…

~(red)/.config(orange)/oh-my-zsh(yellow)

もともと使った電源ケーブルUbuntuリポジトリからパッケージをダウンロードしましたが、速度が遅すぎて次に切り替えました。扱いにくいトピック。使用するとき電源ケーブル私がしたいことができますが、現在の作業ディレクトリの色だけを変更できます。私の設定はこんな感じです。

"cwd": {"fg": 'color', "bg": 'color', "attrs": []}

"cwd:current_folder": {"fg": 'color', "bg": 'color', "attrs": []}

この虹のモンスターを作るのを手伝ってくれてありがとう。 Ubuntu 16.04でTerminator(利用可能な場合)を使用しています。

ベストアンサー1

これを行う関数を作成できます。完璧ではなく、間違いなく移植性はありませんが、うまくいくようです。で使用するには、and(/または/使用、覚えていません)、設定、およびprecmdフック()、およびで使用されている変数を変更する関数を変更するだけ$PS1です。$fg_$bg_%F%B$fg$bgadd-zsh-hook precmd function_precmd$PS1

カスタム機能が必要な場合は、PRE_ASSOCを正しく設定してください。

function colorize_array () {
    local reset='\033[0m'

    for (( i = 1; i <= $# ; i++ )); do
        pre=""

        if (( $+PRE_ASSOC[$i] )); then
            pre=$PRE_ASSOC[$i]
        elif (( $+PRE_ASSOC[$(( $i - $# - 1 ))] )) ;then
            pre=$PRE_ASSOC[$(( $i - $# - 1 ))]
        else
            pre=$PRE_ASSOC[default]
        fi
        echo -n -e $pre$@[$i]$reset
    done
}

typeset -A fg_ bg_ 
typeset -A PRE_ASSOC

fg_=([black]="\033[30m" [white]="\033[37m" [red]="\033[31m" [yellow]="\033[33m" [cyan]="\033[36m")
bg_=([black]="\033[40m" [white]="\033[47m" [red]="\033[41m" [yellow]="\033[43m" [cyan]="\033[46m")

PRE_ASSOC=([default]="$fg_[cyan]/" [1]="$fg_[red]"  [-1]="$fg_[yellow]/")

local pwd="${PWD/#$HOME/~}"
pwd_list=(${(s:/:)pwd})

out=$(colorize_array $pwd_list)
echo $out

コードは完璧ではありませんが、動作します。

おすすめ記事