Bunu başarmak için (aka ) RPROMPTyerine (yanlış) kullanabilirsiniz , veya en azından benzer bir şeyPROMPTPS1
RPROMPTkomut 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 PROMPTsadece 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.
RPROMPTtek 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_SUBSTetkinken). 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 nkeserek karakterlerin sağına keser .
$((COLUMNS-4))sol istemden sonra kalan genişliği hesaplar ( PROMPT). İçindeki iki karaktere ek olarak, PROMPTimleç için birini, diğerini RPROMPTise bir satırdaki en son sütunu kaplamadığı için çıkarmanız gerekir . ( PROMPTDeğ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.