如何使用 Powerlevel10k 缩短 git 分支中的目录名?

如何使用 Powerlevel10k 缩短 git 分支中的目录名?

我正在为 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_hereExamples为蓝色,其余为灰色。

我想要实现以下目标:

缩短 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

相关内容