Bash içinde ters geçmiş araması ve ardından ok tuşları, imlecin yanlış konumda görüntülenmesine neden oluyor


9

Komut satırından CTRL+ ile komut satırından geriye doğru arama yaparken, komutu rdüzenlemek istersem, bazen bir ok tuşuna bastığımda veya CTRL+ aveya CTRL+ girdiğimde imleci yanlış konuma atladığımı fark ettim. e. Sıçradığı belirli konum, ayarlandığı gibi komut satırı istemimin boyutuna eşit bir uzaklık gibi görünüyor PS1.

Bu, zorluğa neden olur çünkü imlecin gerçek konumu, ekranda gösterilenden farklıdır; komutun sonraki düzenlemeleri, imleç atlandığı yer gibi yapılır, ancak gerçek komut herhangi bir atlama olmadan doğru konumu korur.

Buna neyin neden olduğunu veya nasıl düzeltileceğini bilen var mı?

EDIT: Eğer PS1problemin sonuna yeni bir satır eklersem uzaklaşıyor gibi görünüyor. Bununla birlikte, komut istemiyle aynı satıra girmeyi tercih ederim.

Yanıtlar:


6

Bu genellikle geçmişinizde 1 satırdan uzun komutlar nedeniyle oluşur. Geçmişin dışında daha kısa bir öğe seçtiğinizde, komut satırının yeniden oluşturulmasında istemin genişliğini hesaba katmamış gibi görünür, bu yüzden bu uzun komuttan sonraki her şey berbattır.

Bulduğum kolay çözüm ana tuşa basmak, "echo" eklemek ve enter tuşuna basmak. Ardından son komutu geri çağırın ve oradan düzenleyin. (Önce yankıyı gidermek :)


Teşekkürler, bunu bir süre önce denedim. Benim durumumda dikkatsizdim ve bir dosyayı mahvettim, çünkü komutta ekoyu yutan bir boru vardı. Haklısın, bu benim deneyime göre sadece uzun komutları etkiliyor gibi görünüyor.
jonderry

Yeni bulduğum yankıdan daha iyi bir çözüm: Çizginin başına bir eko yerine '#' ekleyin. Bu şekilde bash, tüm çizgiyi bir yorum gibi ele alır.
jonderry

1
Daha da iyisi: eğer mevcut çizgi yeniden çizilirse sorun yok gibi görünüyor. Ekranı temizlemek ve geçerli satırı yeniden çizmek veya bağlanmamış işlev yeniden akım satırı için bir anahtar bağlama oluşturmak için Cl'i seçin.
jonderry

Kaydırma arabelleğini kaybetmekten gerçekten nefret ettiğim için Cl çözümünden bahsetmeyi unuttum, ama evet, tarih gezintiinde geçici olarak görülen bir aksaklık, bu nedenle yeniden çizmeye zorlamak sorunu çözecektir. yeniden çizim akımı, daha iyi bir çözüm gibi geliyor!
cabbey

12

Belki PS1’de \ [ve \] ’ye dahil olmayan basılmayan çıkış dizileriniz vardır.

Hepsini bu şekilde içine aldığınızdan emin olun:

\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]

1
Yalnızca basılmayan dizileri eklerseniz ( \[ve \]bu yüzden bu blok tırnak işaretlerinin birden fazla grubuna ihtiyacınız olursa) harika çalışır
Andomar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.