Mengapa beberapa (seringkali panjang) perintah kacau di bash & zsh?

10

Sering kali ketika saya memasukkan perintah panjang dalam bash atau zsh (ini adalah hanya dua shell yang saya yakin saya telah melihat ini) kursor melengkung ke suatu tempat di tengah-tengah string yang saya masukkan, adakah yang bisa menjelaskan mengapa ini, dan jika sesuatu dapat dilakukan tentang ini?

Saya perhatikan bahwa ini sering terjadi ketika saya menelusuri sejarah shell saya (menggunakan tombol panah), ketika saya menemukan entri yang panjang, entri yang panjang dan baru akan bercampur dengan entri sebelumnya, membuat teks kacau.

Saya memiliki contoh dengan string pendek, yang baru saja saya perhatikan:

Sejarah berisi:

mkdir sune1
mkdir sune2

Jika saya menavigasi ke mkdir sune1, dan kemudian ke mkdir sune2, saya akan mengharapkan baris perintah saya menjadi mkdir sune2(karena inilah yang sekarang saya navigasikan ke) - tetapi sebaliknya saya dapatkan mkdir1sune2.

Saya sudah sering memperhatikan hal ini selama bertahun-tahun, tetapi tidak pernah membiarkannya terlalu mengganggu saya, tetapi saya pikir inilah saatnya untuk perubahan! Jadi, ada ide?

Jonatan
sumber

Jawaban:

8

String cepat Anda mungkin salah meloloskan karakter yang tidak tercetak. Jika Anda memiliki sesuatu seperti perubahan warna di prompt Anda, Anda perlu menempatkan \[dan di \]sekitar urutan pelarian terminal sehingga bash dapat mengatakan bahwa mereka tidak mengambil ruang di layar - jika tidak salah perhitungan di mana perintah yang sebenarnya di layar, dan memperbaruinya di tempat yang salah. Lihat bagian ini dari TLDP . Di zsh, letakkan %{dan di %}sekitar urutan melarikan diri.

Gordon Davisson
sumber
Saya memang memiliki warna di prompt saya, saya akan mencoba melarikan diri, atau menghapusnya & melihat apakah itu membantu. Terima kasih!
Jonatan
Pertimbangkan untuk menggunakan modul warna zsh. Seharusnya menghindari kesalahan stackoverflow.com/questions/6159856/…
Francisco