Linux

提示擴展 ZSH 嵌套截斷

  • December 6, 2021

目前,這是我的 ZSH Prompt 的格式。我一直在閱讀https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html#Prompt-Expansion以進一步了解 zsh 提示中的截斷,但我不知道如何解決這個嵌套截斷問題碰到。

export PROMPT="(%10>,,,>[%5>...>william%>>]hello%>>)"

([wi...]hello)

當我希望它最初截斷內部表達式時%5>...>william%>> ,然後將截斷的表達式傳遞給外部表達式並截斷它。

即我想要輸出

([wi...,,,

手冊說

要截斷的提示字元串部分執行到字元串的末尾,或者到%(構造的下一個封閉組的末尾,或者到在同一分組級別遇到的下一個截斷(即 a 內的截斷%(是分開的),以先到者為準。特別是,帶有參數零的截斷(例如,%<<)標記要截斷的字元串範圍的結束,同時從那里關閉截斷。

也就是說,它們不會嵌套在同一級別:第一個%>>停止截斷,第二個什麼也不做,因為截斷在那裡不再活動。

但是您可以將它們嵌套在%(...).

PROMPT='%12>#>12[%(0l,%5>#>abcefghijk,)]345678%>> end$ '

12[abce#]34# end$

內部是abcefghijk,它被截斷為五個字元,並包裹在 中[],然後12[abce#]345678被截斷為 12 個字元。

引用自:https://unix.stackexchange.com/questions/680351