什么是ZSH中的%〜(代字号百分比)?

时间:2012-12-01 15:00:47

标签: macos shell zsh

我正在尝试自定义this oh-my-zsh主题。

我在其中找到了这段代码,显然打印了dir名称(如果我错了,请更正我)。

# 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)我怎样才能做到< em>总是输出真实路径。

1 个答案:

答案 0 :(得分:10)

请参阅EXPANSION OF PROMPT SEQUENCES的{​​{1}}部分:

man zshmisc