在 zsh 提示符中显示 $HOME 的 ~

在 zsh 提示符中显示 $HOME 的 ~

我的提示设置为以下内容:

PROMPT=%F{reset}[%F{blue}%2/%F{reset}]

它将两个父目录显示为

[foo/bar]

但是,当我位于$HOME或某个目录深处时$HOME,我希望提示显示为

[~]
[~/foo]

分别代替

[/Users/me]
[me/foo]

我尝试过像 Steve Losh 那样的方法collapse_pwd(以及更简单的版本:${PWD/#$HOME/~}文章中也提到)和其他类似的版本,但我失去了只能显示最后两个目录的灵活性。

我该如何修改上面的内容来处理$HOME?我的 zsh 版本是zsh 5.0.0 (x86_64-apple-darwin12.0.0)OS X 10.8.2

答案1

zsh对此有内置支持。使用%2~而不是%2/.也可以看看%40<...<%~

另请参阅autonamedirs选项:

$ l=/usr/local
$ PS1='%~$ '
~$ setopt autonamedirs
~$ cd /usr/local
~l$ 

(如果没有autonamedirs,您仍然可以执行cd ~ltocd/usr/local显示提示~l)。

相关内容