Saya perhatikan ini kadang-kadang dengan berbagai aplikasi. Saya sering berpikir itu karena output dibatalkan lebih awal (ctrl + c, misalnya) atau yang serupa, dan zsh sedang mengisi karakter baris baru. Tapi sekarang rasa ingin tahu mendapatkan yang terbaik dari saya, karena sepertinya tidak melakukan ini di bash.
zsh
pesta
The Sequence
Program adalah sesuatu yang saya ditarik dari sebuah buku saat membaca tentang sertifikasi Jawa dan hanya ingin melihat apakah itu akan mengkompilasi dan menjalankan. Saya memang memperhatikan bahwa itu tidak menggunakan println()
metode dari System.out
paket / kelas. Alih-alih itu menggunakan tua biasa print()
.
Apakah kurangnya karakter baris baru menjadi alasan saya mendapatkan simbol ini?
print -n "this is a test"
laluprint "this is a test"
PROMPT_EOL_MARK=''
ke dalam .zshrc saya untuk menyembunyikan perbedaan antara mengikuti baris baru atau tidak pada output perintah.Itu fitur khusus
zsh
(dan sekarangfish
juga) untuk membiarkan Anda melihat dengan jelas garis yang tidak ditentukan dalam output perintah.Dalam shell tradisional, jika perintah menampilkan beberapa data setelah karakter baris baru terakhir, atau, dengan kata lain, jika meninggalkan kursor terminal tidak di awal baris, prompt berikutnya oleh shell berakhir ditambahkan ke baris terakhir yang tidak tertembus. seperti dalam:
Itu mengacaukan prompt, dan mudah untuk melewatkan itu di
XXX
sana terutama jika Anda punya prompt yang lebih menarik seperti itu. Ini juga memengaruhi posisi kursor yang menyebabkan gangguan tampilan saat Anda menggerakkan kursor.zsh
mengatasinya, dengan menunjukkan bahwa output memiliki garis yang tidak ditentukan dengan%
karakter dalam video tebal dan mundur, dan mengeluarkan prompt berikutnya di awal baris berikutnya:Itu melakukannya dengan mengeluarkan video terbalik
%
di akhir setiap perintah (sebelum setiap prompt), tetapi diikuti oleh 79 spasi (dengan asumsi terminal lebar 80 karakter), karakter CR (salah satu yang menyebabkan kursor kembali ke yang pertama kolom) dan urutan untuk menghapus ke akhir baris (dan kemudian prompt).Dengan begitu, jika ada garis yang tidak ditentukan, karena kursor tidak ada di posisi pertama, 80 karakter itu akan membuat kursor bergerak ke baris berikutnya (dan itu
%
akan tetap ada). Jika tidak, maka%
79 ruang tersebut akan berada pada satu baris yang akan dihapus setelahnya.Sekarang, itu hanya berfungsi jika terminal tidak membungkus garis (misalnya, itu tidak akan berfungsi dengan benar setelah
tput rmam
). Jika Anda memiliki terminal yang lambat (seperti pada 9600 baud serial line), Anda mungkin benar-benar melihat%
yang ditampilkan dan kemudian dihapus setelah setiap perintah, jadizsh
Anda dapat menonaktifkan fitur itu:Dengan begitu,
zsh
berperilaku lebih seperti cangkang tradisional.Anda juga dapat mengubah tanda itu dengan
$PROMPT_EOL_MARK
variabel.sumber