คุณสามารถใช้ (mis-) RPROMPT
แทนPROMPT
(aka PS1
) เพื่อให้ได้สิ่งนี้หรืออย่างน้อยก็คล้ายกัน
RPROMPT
จะปรากฏขึ้นชิดขวาบนบรรทัดเดียวกันกับพรอมต์ หากคำสั่งที่พิมพ์ของคุณยาวพอที่จะเข้าถึงคำสั่งนั้นRPROMPT
จะถูกซ่อนโดยอัตโนมัติ (และปรากฏขึ้นอีกครั้งหากคุณลบออกมากพอ)
เพื่อให้คุณสามารถตั้งค่าที่จะมีเพียงตัวละครที่รวดเร็วและใส่ทุกอย่างลงไปในที่อื่นPROMPT
RPROMPT
แล้วคุณแผ่นที่มีช่องว่างจนกว่าจะเติมส่วนที่เหลือของสายเพื่อที่จะสัมผัสเกือบRPROMPT
PROMPT
ตัวอย่างเช่น
setopt PROMPT_SUBST
PROMPT='%# '
RPROMPT='%$((COLUMNS-4))>> %n@%m %~${(r:$COLUMNS:)}'
สิ่งนี้ควรแสดงบางสิ่งเช่น
% ▒ user@machine ~
ซึ่ง▒
เป็นตำแหน่งของเคอร์เซอร์ เมื่อคุณเริ่มพิมพ์ทุกอย่างหลังจากนั้นจะถูกซ่อน ตัวอย่างเช่น
% echo foo▒
คำอธิบาย:
setopt PROMPT_SUBST
เปิดใช้งานการแทนที่พารามิเตอร์ในพรอมต์ในแต่ละครั้งที่ปรากฏพรอมต์
RPROMPT
จำเป็นต้องกำหนดในเครื่องหมายคำพูดเดี่ยวเพื่อให้พารามิเตอร์ในนั้นไม่ได้ถูกขยายทันทีตามคำจำกัดความ แต่จะแสดงเพียงครั้งเดียว (พร้อมPROMPT_SUBST
เปิดใช้งาน) วิธีนี้ช่วยให้มั่นใจได้ว่าการขยายตัวทำงานอย่างถูกต้องแม้ในขณะที่ปรับขนาดหน้าต่างเทอร์มินัล
%#
เป็นตัวอักษรที่พร้อมท์: #
สำหรับราก%
สำหรับคนอื่น ๆ
$COLUMNS
คือความกว้างปัจจุบันของเทอร์มินัล
%n>>
ตัดทุกอย่างทางด้านขวาของมันเป็นn
ตัวอักษรโดยตัดด้านขวา
$((COLUMNS-4))
คำนวณความกว้างที่เหลือหลังจากพรอมต์ซ้าย ( PROMPT
) นอกจากตัวละครสองตัวที่PROMPT
คุณต้องลบหนึ่งตัวสำหรับเคอร์เซอร์และอีกตัวหนึ่งเพราะRPROMPT
ไม่ครอบคลุมคอลัมน์สุดท้ายของบรรทัด (หากคุณต้องการใช้PROMPT
ความยาวผันแปรได้คุณจะต้องคำนวณความยาวแบบไดนามิก)
%n@%m %~
เป็นเพียงตัวอย่างและแสดงชื่อผู้ใช้ ( %n
) ชื่อเครื่อง ( %m
) และไดเรกทอรีปัจจุบัน ( %~
)
${(r:$COLUMNS:)}
ถูกขยายเป็นสตริงช่องว่างที่มีความกว้างเท่ากับเทอร์มินัล สิ่งนี้ทำให้มั่นใจได้ว่าจะมีช่องว่างภายในเพียงพอเสมอ