Zsh

在沒有 PROMPT_SUBST 的情況下處理 $psvar 中的提示指令

  • July 9, 2018

我用來在我的提示precmd中生成彩色git狀態。

我生成一個類似 的字元串%F{green}master%f%F{red}%f,並將其分配給$psvar[1].

我的提示包括%1v顯示文本。

但是,我沒有看到綠色和紅色文本,而是分配的文字值。

有什麼辦法可以zsh解析內容$psvar嗎?

提示擴展不是遞歸的。你有%1v你的提示,所以內容$psvar[1]被插入到你的提示中。

不要將提示擴展指令放入 中$psvar,而是放入提示內容。插入終端轉義序列以更改顏色。你可以使用colors它。

autoload -U colors
colors
… {
 psvar[1]="$fg[green]$branch$fg[default]"
}

這個zsh-users郵件列表文章說:

percent-expandos 的結果不會重新擴展,因此插入的任何內容都會按%v字面意思顯示在最終提示中。

所以似乎唯一的方法是使用set -o prompt_subst.

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