ZSH提示显示~window_label而不是文件夹名称

时间:2014-03-27 07:57:26

标签: git command-line zsh prompt

不知何故,我的zsh提示符在某些文件夹中显示文本 ~window_label ,而不是显示其名称。似乎是git文件夹的问题,但是一些git文件夹显示正确。

以下是我使用的zsh主题。

PROMPT='%{$reset_color%}[%{$fg[cyan]%}%2~%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}%{$reset_color%}] $ '
# PROMPT='[%{$fg_bold[blue]%}%2~ $(git_prompt_info)%{$reset_color%}%(!.#.$) ] $ '


ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%} | %{$fg[blue]%}git:‹%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}›%{$fg[yellow]%}✗%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}›"

1 个答案:

答案 0 :(得分:1)

提示中的%2~负责此行为。通常这会被当前工作目录的最后两个组件所取代。但是,当当前工作目录具有指定目录作为前缀时,此部分将替换为~,后跟目录名称,或~$HOME

通常,命名目录是主目录,但可以定义其他目录。在您的情况下,它似乎是一个静态命名目录,可以通过设置一个shell参数来定义一个以/开头的值

window_label=/some/path/to/somewhere

或使用hash -d

hash -d window_label=/some/path/to/somewhere

无论哪种方式,您的提示都会显示/some/path/to/somewhere而不是~window_label

从参数window_label的名称开始,可能会为终端窗口的标题设置它。这也可能是它仅为某些git文件夹发生的原因:目录名称表示(~window_label)仅在表示当前目录的最短方式时使用。例如:/tmp/foo不会被替换,而/tmp/foo/bar/baz会被替换。

有关详细信息,请参阅&#34;文件名扩展&#34; 部分,尤其是&#34;静态命名目录&#34; < EM> zshmisc(1)