Yanıtlar:
İstediğiniz (doğru tahmin edersem) efektini kullanarak precmd
bilgi istemi görüntülenmeden önce her zaman çalıştırılan işlev, bilgi istemi üzerine ilave satırlar yazdırmak için kullanılır.
Örneğin bu kodu kullanın
precmd() {
LEFT="The time is"
RIGHT="$(date) "
RIGHTWIDTH=$(($COLUMNS-${#LEFT}))
print $LEFT${(l:$RIGHTWIDTH::.:)RIGHT}
}
PS1="foo > "
RPS1="bar"
açıklama
$LEFT
ve $RIGHT
dizeleri sol ve sağ taraf için basılı tutun, cevap. Komutun çıktısını kullanabilirsiniz. $(...)
sözdizimi. $RIGHTWIDTH
Geçerli terminal genişliğinin farkı (saklanan zsh içinde $COLUMNS
parametre) ve sol dizenin genişliği. $((...))
matematiksel ifadeler içindir ${(l:$RIGHTWIDTH::.:)RIGHT}
, nerede parametre $RIGHT
sol yastıklı ( l
) noktalarla (sonuncuyu atlayın) :.:
boşluklar istiyorsanız) uzunluğuna $RIGHTWIDTH
. PS1
ve RPS1
kısaltılmış PROMPT
ve RPROMPT
. gösteri
The time is............................................Fri, Sep 18, 2015 8:20:22 PM
foo > _ bar
LEFT
veyaRIGHT
ANSI kaçış dizilerini (örneğin renkler) içerir. Dize uzunluğunu hesaplamak için ansi kaçar, bunu yapabiliriz.$(( ${#${(S%%)str//(\%([KF1]|)\{*\}|\%[Bbkf])}} ))