命令提示符目录样式

时间:2013-04-22 12:30:37

标签: git shell command zsh prompt

我特别需要调整命令提示符。目前我正在使用Holmans Dotfiles,我想进一步自定义它,以便创建一个更具可读性和清晰度的提示。我想要的是下面使用图像描述,请注意这些是为了看起来像我想要的那些照片;)。 This is also an issue on github, with inline images!

假设您拥有此文件结构,如下图所示:

enter image description here

目前,当我进去时,让我说map3我的提示只显示:

image

我希望扩展它,但使用其他样式。目前,我所在的当前地图(map3)以青色突出显示。我希望能够看到它的父母,但那些没有以相同颜色突出显示的父母。 Plz看下面的图片:

image

据我所知,%3给出了最后的3个目录。但是我不知道如何单独设置每个目录。

---------------------------另一个可选的想法---------------- ------------------------

我有另一个想法,但对上述问题不太重要的是根据dir是否是git存储库是或否来得到相对提示。 (因此,在git repo的根图之前总是可以看到dirtree)

也就是说map0是git存储库的根,我在map3中,那么我希望我的提示是这样的:

image

当我在map5中时这样:

image

可选地,能够像这样设置rootgit地图样式是很好的,例如:

image

目前我的提示与holmans dotfiles中的提示相同

1 个答案:

答案 0 :(得分: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的路径(magenta中的git root,除非你在git root中,在这种情况下它只显示当前目录red):

Fixed some issues.

可能的改进:

  1. 这显示了magenta中git仓库的根目录,除非你在根目录中,在这种情况下它是红色的,就像你在其他目录中一样。总是着色git root(即使它是当前目录)可能很好(目前可能会令人困惑?)。

  2. 我显示相对于git repo根目录的路径(如果存在)。另一种选择可能是显示完整路径,着色git仓库的根,如下例所示:

    ~/repositories/config-files/zshrc.d
    ^-------------^
       White
                   ^-----------^
                     Magenta
                                ^------^
                                  Red
    
  3. 子模块着色:请注意屏幕截图中的路径根被重置为最深的git仓库(所以在子模块中,我们看不到config-files/oh-my-zsh,只有oh-my-zsh })。我不确定如何检测子模块,但它可能是一个进一步的改进。

  4. 进一步详情:

    对于我如何完成所有这些here,我有一个相当深入的了解[这是我的笔记]。它还没有最后的触摸(git root和PWD之间的路径),但其他一切都在那里。如果您尝试修改此内容并希望更好地理解它可能会有用。