当我调用时,cd /Users/mu3/apps
提示会像这样简化:
mu3 [~/apps]:
是否可以对自定义路径执行相同的操作,例如cd /Users/mu3/Development/Web/test
:
mu3 [DEV/test]:
我正在使用 iTerm + oh-my-zsh。
UPD:我不够具体,而且还发现了一些新信息。
自从我使用agnoster
主题为zsh
shell,它自己处理提示符。
所以我最终改变了这条线:
prompt_segment blue black '%~'
对此:
PWDshort="${PWD/#$HOME/~}"
PWDshort="${PWDshort/\~\/_cld\/Dropbox\/Dev\/Web/DEV}"
prompt_segment blue black $PWDshort
现在的问题是任何更新显然都会破坏这一点。
有没有更好的方法来达到相同的结果?
答案1
定义提示的目录缩写的标准方法是使用命名目录。扩展时使用命名目录%~
提示转义序列,概括~
为缩写您的主目录和~bob
缩写Bob 的主目录。
mu3 [~]: cd /Users/mu3/Development/Web/test
mu3 [~/Development/Web/test]: hash -d test=$PWD
mu3 [~test]: cd config
mu3 [~test/config]:
通常的方法是将hash -d test=~/Development/Web/test
您的.zshrc
.除了用于缩写提示之外,命名目录还可以用于缩写路径,例如您可以运行cd ~test
来切换到该目录。
使用此方法,缩写形式始终以 开头~
。
答案2
您可以(如 中bash
)在提示中使用函数。这是一个例子:
setopt PROMPT_SUBST
print_dir(){
case $PWD in
(*/Development*)
echo DEV/${PWD:t}
;;
(*)
echo $PWD
;;
esac
}
export PROMPT=$'[$(print_dir)]: '
这zshall
手册页文档PROMPT_SUBST
:
如果
PROMPT_SUBST
设置了该选项,则首先执行提示字符串参数扩展,命令替换和算术展开。看zshexpn(1)。