我正在尝试自定义 this oh-my-zsh 主题。
我在其中找到了这段代码,它显然打印了目录名称(如果我错了,请纠正我)。
# Dir: current working directory
prompt_dir() {
prompt_segment blue black '%~'
}
和 prompt_segment 定义为
# Begin a segment
# Takes two arguments, background and foreground. Both can be omitted,
# rendering default background/foreground.
prompt_segment() {
local bg fg
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
[[ -n $2 ]] && fg="%F{$2}" || fg="%f"
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} "
else
echo -n "%{$bg%}%{$fg%} "
fi
CURRENT_BG=$1
[[ -n $3 ]] && echo -n $3
}
它的输出并不总是只是目录路径。如果我所在的路径也存在于 ENV 变量中,它会用该变量替换路径。
如果我在
/Users/abc/.oh-my-zsh/custom
而 $ZSH_CUSTOM 是
/Users/abc/.oh-my-zsh/custom
我只是在命令提示符中得到
$ZSH_CUSTOM
。所以我的问题是,1)从
%~
发送的 prompt_dir
是什么,2)这段代码从哪里获取当前工作目录,以及 3)如何让它始终输出真实路径。 最佳答案
参见 EXPANSION OF PROMPT SEQUENCES
的 man zshmisc
部分: