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
LEFTveyaRIGHTANSI kaçış dizilerini (örneğin renkler) içerir. Dize uzunluğunu hesaplamak için ansi kaçar, bunu yapabiliriz.$(( ${#${(S%%)str//(\%([KF1]|)\{*\}|\%[Bbkf])}} ))