Saya ingin multi-line zsh prompt dengan bagian alined yang tepat, yang akan terlihat seperti ini:
2.nate@host:/current/dir 16:00
->
Saya tahu tentang RPROMPT di zsh, tapi itu memiliki prompt rata kanan berlawanan dengan prompt normal Anda, yang berada di baris teks yang sama dengan mengetik Anda.
Apakah ada cara untuk memiliki bagian rata kanan ke baris pertama dari command prompt multi-baris? Saya sedang mencari arahan dalam variabel PS1 yang mengatakan 'benar menyelaraskan sekarang' atau variabel yang untuk PS1 apa RPROMPT adalah untuk PROMPT.
Terima kasih!
Inilah cara saya mengkonfigurasi hal ini sekarang. Pendekatan ini tidak memerlukan manipulasi escape-sequence, tetapi akan membuat Anda memiliki dua variabel berbeda untuk prompt primer:
PS1
dengan pewarnaan danNPS1
tanpa.Perhatikan penggunaan
print -P
untuk ekspansi cepat,${#variable}
untuk mendapatkan panjang string yang disimpan dalam variabel, danprintf "%Nd"
untuk bantalan kiri denganN
spasi. Keduanyaprint
danprintf
merupakan perintah bawaan, jadi seharusnya tidak ada kinerja yang hit.sumber
Mari kita tentukan prompt dengan tata letak ini:
Untuk melakukan ini, kita akan memerlukan fungsi yang memberitahu kita berapa banyak karakter yang diberikan string ketika dicetak.
Kita akan membutuhkan fungsi lain yang mengambil dua argumen dan mencetak denda penuh dengan argumen ini di sisi yang berlawanan dari layar.
Akhirnya kita dapat mendefinisikan fungsi yang mengatur
PROMPT
danRPROMPT
, memerintahkan ZSH untuk memanggilnya sebelum setiap prompt, dan mengatur opsi ekspansi prompt yang sesuai:Ini menghasilkan prompt berikut:
#
jika root,%
jika tidak; hijau saat sukses, merah kesalahan.Anda dapat menemukan detail tambahan di Multi-line prompt: Bahan yang hilang dan kode lengkap dalam inti ini .
sumber