提示:将自定义路径替换为简短的单词,例如 ~ for home

提示:将自定义路径替换为简短的单词,例如 ~ for home

当我调用时,cd /Users/mu3/apps提示会像这样简化:

mu3 [~/apps]:

是否可以对自定义路径执行相同的操作,例如cd /Users/mu3/Development/Web/test

mu3 [DEV/test]:

我正在使用 iTerm + oh-my-zsh。


UPD:我不够具体,而且还发现了一些新信息。
自从我使用agnoster主题为zshshell,它自己处理提示符。

所以我最终改变了这条线:

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)

相关内容