我正在为 ZSH 使用 Powerlevel10k 主题,并已设置POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
为缩短除当前目录之外的所有目录名称。它按预期工作:[~/Desktop/Codes/OLED_Display/Codes
变为~/D/Co/O/Codes
]
但是,它不会缩短 git 分支开始的目录名称。
例如,我的提示可能看起来像这样:~/D/Co/O/git_branch_starts_here/Examples
,其中git_branch_starts_here
和Examples
为蓝色,其余为灰色。
我想要实现以下目标:
缩短 git 分支目录 [或任何锚点],使其看起来像这样:~/D/Co/O/g/Examples
这里,g
应该Examples
仍然为蓝色(表示 git 分支的开始),而其余部分则像往常一样为灰色。
我尝试阅读 .p10k.zsh 文件,发现了这些内容;
typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
# If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
# files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
# /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
# or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
# and other directories don't.
#
# Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
# This moves the truncation point to the right (positive offset) or to the left (negative offset)
# relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
# Don't shorten this many last directory segments. They are anchors.
我不明白它们到底是什么意思,但我试着摆弄它们,但似乎无法得到我想要的...任何帮助都将不胜感激:)
编辑:尝试更改typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
为typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER=""
,它确实可以缩短 git 分支,但是我认为它完全消除了确定某物是否是锚点的能力?所以我认为这不是一个好方法...
编辑2:@harrymc 提到的链接没有回答我的问题:
这第一个链接的答案将目录完全截断为最新的目录:即:~/Documents/Repositories/cool-project $
变成~ cool-project $
这第二个链接的答案这与我想要实现的目标完全相反。删除提到的行总是会完全显示 git 分支...但是,我确实尝试弄乱了的值,(( $#where > 32 )) && where[13,-13]="…"
但在采购后我没有注意到任何变化.p10k.zsh