我特别需要调整命令提示符。目前我正在使用Holmans Dotfiles,我想进一步自定义它,以便创建一个更具可读性和清晰度的提示。我想要的是下面使用图像描述,请注意这些是为了看起来像我想要的那些照片;)。 This is also an issue on github, with inline images!
假设您拥有此文件结构,如下图所示:
目前,当我进去时,让我说map3我的提示只显示:
我希望扩展它,但使用其他样式。目前,我所在的当前地图(map3)以青色突出显示。我希望能够看到它的父母,但那些没有以相同颜色突出显示的父母。 Plz看下面的图片:
据我所知,%3给出了最后的3个目录。但是我不知道如何单独设置每个目录。
---------------------------另一个可选的想法---------------- ------------------------
我有另一个想法,但对上述问题不太重要的是根据dir是否是git存储库是或否来得到相对提示。 (因此,在git repo的根图之前总是可以看到dirtree)
也就是说map0是git存储库的根,我在map3中,那么我希望我的提示是这样的:
当我在map5中时这样:
可选地,能够像这样设置rootgit地图样式是很好的,例如:
目前我的提示与holmans dotfiles中的提示相同
答案 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
):
这显示了magenta
中git仓库的根目录,除非你在根目录中,在这种情况下它是红色的,就像你在其他目录中一样。总是着色git root(即使它是当前目录)可能很好(目前可能会令人困惑?)。
我显示相对于git repo根目录的路径(如果存在)。另一种选择可能是显示完整路径,着色git仓库的根,如下例所示:
~/repositories/config-files/zshrc.d
^-------------^
White
^-----------^
Magenta
^------^
Red
子模块着色:请注意屏幕截图中的路径根被重置为最深的git仓库(所以在子模块中,我们看不到config-files/oh-my-zsh
,只有oh-my-zsh
})。我不确定如何检测子模块,但它可能是一个进一步的改进。
对于我如何完成所有这些here,我有一个相当深入的了解[这是我的笔记]。它还没有最后的触摸(git root和PWD之间的路径),但其他一切都在那里。如果您尝试修改此内容并希望更好地理解它可能会有用。