Bunu başarmak için (aka ) RPROMPT
yerine (yanlış) kullanabilirsiniz , veya en azından benzer bir şeyPROMPT
PS1
RPROMPT
komut istemiyle aynı satırda sağa hizalı olarak görüntülenir. Yazdığınız komutun ulaşması için yeterince uzunsa RPROMPT
, otomatik olarak gizlenir (ve yeterince silerseniz yeniden görünür).
Böylece PROMPT
sadece istemi karakterini içerecek şekilde ayarlayabilir ve her şeyi içine koyabilirsiniz RPROMPT
. Sonra RPROMPT
çizginin geri kalanını dolana kadar boşluklarla doldurun, böylece neredeyse dokunur PROMPT
. Örneğin
setopt PROMPT_SUBST
PROMPT='%# '
RPROMPT='%$((COLUMNS-4))>> %n@%m %~${(r:$COLUMNS:)}'
Bu gibi bir şey göstermeli
% ▒ user@machine ~
▒
imlecin konumu nerede . Bir kere yazdıktan sonra her şeyi yazmaya başlayacaksın. Örneğin
% echo foo▒
Açıklama:
setopt PROMPT_SUBST
bilgi istemi her görüntülendiğinde bilgi isteminde parametrelerin değiştirilmesini sağlar.
RPROMPT
tek tırnak işaretleri içinde tanımlanması gerekir, böylece içerisindeki parametreler tanımda hemen genişletilmez, sadece bilgi istemi görüntülendiğinde ( PROMPT_SUBST
etkinken). Bu, terminal penceresi yeniden boyutlandırıldığında bile dolgunun düzgün çalışmasını sağlar.
%#
komut istemi karakteri: herkes #
için root %
için.
$COLUMNS
terminalin geçerli genişliğidir.
%n>>
sağındaki her şeyi sağa n
keserek karakterlerin sağına keser .
$((COLUMNS-4))
sol istemden sonra kalan genişliği hesaplar ( PROMPT
). İçindeki iki karaktere ek olarak, PROMPT
imleç için birini, diğerini RPROMPT
ise bir satırdaki en son sütunu kaplamadığı için çıkarmanız gerekir . ( PROMPT
Değişken uzunlukta bir kullanmak istiyorsanız , uzunluğunu dinamik olarak hesaplamanız gerekir.)
%n@%m %~
sadece bir örnektir ve kullanıcı adını ( %n
), makine adını ( %m
) ve geçerli dizini ( %~
) gösterir.
${(r:$COLUMNS:)}
terminal ile aynı genişlikte bir dizi boşluğa genişletilir. Bu, her zaman yeterli dolgu alanı olmasını sağlar.