所有人!
在我的iterm2 (使用zsh,噢-my.zsh和powerline2)终端中,如果我转到某些目录,就会有一个提示符,如下所示:
$ pokemon/electric/pichu/pikachu/raichu我希望有一个较短但仍然完整的路径表示,如下所示:
$ P/E/P/P/raichu我见过这种配置,但我还无法设置它。
======编辑======图形示例:

你能帮个忙吗?
提前感谢!
发布于 2022-09-03 06:57:38
.p10k.zsh文件(在我的例子中,我在zsh/oh/iTerm上使用powerlevel10k )纳米.p10k.zsh (或者使用您选择的任何其他编辑器)。typeset -g POWERLEVEL9K_SHORTEN_STRATEGY并按如下方式添加值:类型集-g -gtypeset -g POWERLEVEL9K_SHORTEN_DELIMITER并将其设置为空:类型集-g POWERLEVEL9K_SHORTEN_DELIMITER=typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH并添加值1:类型集-g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1你应该能看到这样的东西:

如果您使用的是标准的zsh主题(没有powerlevel10k主题),您可以尝试这样做:
添加到~/.zshrc中:
setopt prompt_subst
PROMPT='\$ /$(printf "%c/" ${(s./.)PWD:h})${PWD:t} '(s./.) -在/上分割一条路径。printf "%c/" -打印每个目录段的第一个字符。${PWD:h} -当前目录的“头”,即除最后一个元素之外的所有内容。${PWD:t} -目录路径中的“尾巴”/最后一个元素。发布于 2022-05-10 05:14:14
你可以这样做:
$ set -o extendedglob -o promptsubst
$ PS1='${${${PWD/#%(#b)$HOME(|\/*)/$match[1]}//(#b)([^\/])([^\/]#)\//$match[1]:u/}//\%/%%}$ '
$ cd install/cvs/oh-my-zsh
/I/C/oh-my-zsh$ cd /usr/share/zsh/functions/Misc
/U/S/Z/F/Misc$ 或者在chpwd()钩子中计算它,只在当前工作目录更改时才计算它(还避免启用危险的promptsubst以及不得不转义%s),并将其存储在提示符中与%v一起引用的$psvar中:
shorten_PWD() {
set -o localoptions -o extendedglob
psvar[1]=${PWD/#%(#b)$HOME(|\/*)/$match[1]}
psvar[1]=${psvar[1]//(#b)([^\/])([^\/]#)\//$match[1]:u/}
}
chpwd_functions+=(shorten_PWD)
shorten_PWD
PS1='%1v$ '发布于 2022-05-08 02:38:07
您可以创建链接
ln -s pokemon P然后可以执行cd pokemon或cd P,然后进入同一个目录。
https://unix.stackexchange.com/questions/701806
复制相似问题