0

コマンドプロンプトを調整する必要があります。現在、 Holmans Dotfilesを使用しており、さらにカスタマイズして、より読みやすく明確なプロンプトを作成したいと考えています。私が望むものは、画像を使用して以下に説明されています。これは、インライン画像を使用した github の問題でもあります。

この画像のようなファイル構造があるとします。

ここに画像の説明を入力

現時点では、map3 と言うと、プロンプトのみが表示されます。

画像

これを拡張したいのですが、別のスタイリングを使用します。現時点で、私がいる現在のマップ (map3) はシアンで強調表示されています。親を見たいのですが、同じ色で強調表示されていません。以下の画像をご覧ください。

画像

私が知っていることから、%3 は最後の 3 つのディレクトリを与えるということです。ただし、各ディレクトリを個別にスタイルする方法がわかりません。

--------------------------- その他のオプションのアイデア ------------------- ----------------------

私が持っていたもう1つのアイデアは、上記の問題よりも重要ではありませんが、ディレクトリがgitリポジトリであるかどうかに基づいて相対的なプロンプトを表示することです。(したがって、dirtree は常に git リポジトリのルートマップまで表示されます)

つまり、map0 が git リポジトリのルートであり、私は map3 にいるとします。プロンプトを次のようにしたいと思います。

画像

私がこのようにmap5にいるとき:

画像

オプションで、たとえば次のように rootgit マップのスタイルを設定できると便利です。

画像

現時点では、私のプロンプトは holmans dotfiles と同じです

4

1 に答える 1

3

プロンプトのマルチカラー パス

 directory_name() {
    PROMPT_PATH=""

    CURRENT=`dirname ${PWD}`
    if [[ $CURRENT = / ]]; then
        PROMPT_PATH=""
    elif [[ $PWD = $HOME ]]; then
        PROMPT_PATH=""
    else
        if [[ -d $(git rev-parse --show-toplevel 2>/dev/null) ]]; then
            # We're in a git repo.
            BASE=$(basename $(git rev-parse --show-toplevel))
            if [[ $PWD = $(git rev-parse --show-toplevel) ]]; then
                # We're in the root.
                PROMPT_PATH=""
            else
                # We're not in the root. Display the git repo root.
                GIT_ROOT="%{$fg_bold[magenta]%}${BASE}%{$reset_color%}"

                PATH_TO_CURRENT="${PWD#$(git rev-parse --show-toplevel)}"
                PATH_TO_CURRENT="${PATH_TO_CURRENT%/*}"

                PROMPT_PATH="${GIT_ROOT}${PATH_TO_CURRENT}/"
            fi
        else
            PROMPT_PATH=$(print -P %3~)
            PROMPT_PATH="${PROMPT_PATH%/*}/"
        fi
    fi

    echo "%{$fg_bold[cyan]%}${PROMPT_PATH}%{$reset_color%}%{$fg[red]%}%1~%{$reset_color%}"
}

これにより、git root へのパスが表示されます (git root in 。git root にmagentaいる場合を除き、現在のディレクトリが に表示されますred)。

いくつかの問題を修正しました。

考えられる改善:

  1. これは の git リポジトリのルート ディレクトリを示していmagentaます。ただし、ルートにいる場合は、他のすべてのディレクトリと同じように赤で表示されます。常に git ルートに色を付けると (現在のディレクトリであっても)、いいです(現在、混乱している可能性がありますか?)。

  2. 存在する場合は、git リポジトリのルートからの相対パスを表示します。別のオプションとして、次の例のように、git リポジトリのルートに色を付けてフル パスを表示することもできます。

    ~/repositories/config-files/zshrc.d
    ^-------------^
       White
                   ^-----------^
                     Magenta
                                ^------^
                                  Red
    
  3. サブモジュールのカラーリング: スクリーンショットで、パス ルートが最も深い git リポジトリにリセットされることに注意してください (したがって、サブモジュールでは、 は表示されずconfig-files/oh-my-zsh、 のみが表示されますoh-my-zsh)。サブモジュールを検出する方法はわかりませんが、さらに改善される可能性があります。

詳細:

私がこれらすべてをどのように行ったかについて、かなり詳細な説明があります [これは私のメモです]。まだ最終的な仕上げ (git root と PWD の間のパス) はありませんが、他はすべて揃っています。これを変更しようとしていて、理解を深めたい場合に役立つ場合があります。

于 2013-04-25T12:37:08.453 に答える