zsh 提示符號中 %F{color} 和 %{$fg[color]%} 之間的差異

zsh 提示符號中 %F{color} 和 %{$fg[color]%} 之間的差異

我注意到有兩種方法可以在提示中設定前景色zsh

PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'

這兩行都會產生藍色$作為提示。這兩者之間有什麼區別嗎?

如果您想指定顏色代碼,您可以指定$F{160}或 其他數字,但不能指定%{$fg[160]%}。這是這兩個選項之間的唯一區別嗎?

答案1

直接%F{...}轉義由zsh C程式碼直接處理。使用$fg[blue]是存取名為 的關聯數組fg。為此,您需要呼叫colorszsh 附帶的函數。對於也依賴該PROMPT_SUBST選項的提示。

這兩種方式產生的結果沒有太大差異。前者較乾淨,並且與 zsh 對終端狀態的追蹤配合得更好。它於 2008 年添加到 zsh 中,而顏色功能於 1999 年添加。 如今,您不太可能繼續使用太舊的 zsh 來缺乏任何一個功能,因此沒有必要再堅持舊的方式了。

正如您所注意到的,%F可以處理您的終端支援 88 或 256 色的數字。如果您執行更新的 zsh,您也可以指定十六進位三元組,例如%F{#0000ff}您有真彩色終端(或載入 zsh/nearcolor 模組)。

相關內容