ทำไมคำสั่งบางคำสั่ง (ยาวบ่อย) อ่านไม่ออกใน bash & zsh


10

หลายครั้งที่ฉันป้อนคำสั่งแบบยาวใน bash หรือ zsh (นี่เป็นเพียงกระสุนสองตัวที่ฉันคิดว่าฉันเห็นนี่) เคอร์เซอร์วาร์ปไปที่ไหนสักแห่งที่อยู่กลางสตริงที่ฉันป้อนทุกคนสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนี้ และถ้าบางสิ่งสามารถทำได้เกี่ยวกับเรื่องนี้?

ฉันสังเกตเห็นว่าสิ่งนี้มักจะเกิดขึ้นเมื่อฉันเรียกดูประวัติของเชลล์ของฉัน (โดยใช้ปุ่มลูกศร) เมื่อฉันพบรายการที่ยาวรายการใหม่ที่ยาวจะผสมกับรายการก่อนหน้าโดยแสดงข้อความที่อ่านไม่ออก

ฉันมีตัวอย่างที่มีสตริงสั้น ๆ ซึ่งฉันเพิ่งสังเกตเห็น:

ประวัติประกอบด้วย:

mkdir sune1
mkdir sune2

ถ้าฉันนำทางไปmkdir sune1และหลังจากนั้นจะmkdir sune2ผมจะคาดหวังบรรทัดคำสั่งของฉันจะmkdir sune2(ตั้งแต่นี้เป็นสิ่งที่ฉันได้ในขณะนี้เพื่อสำรวจ) - mkdir1sune2แต่ฉันได้รับ

ฉันสังเกตเห็นสิ่งนี้บ่อย ๆ เป็นเวลาหลายปี แต่อย่าให้มันรบกวนฉันมากเกินไป แต่ฉันคิดว่ามันถึงเวลาสำหรับการเปลี่ยนแปลงแล้ว! ดังนั้นความคิดใด ๆ

คำตอบ:


8

สตริงข้อความแจ้งของคุณอาจหนีอักขระที่ไม่พิมพ์ออกมาอย่างไม่ถูกต้อง หากคุณมีอะไรที่เหมือนกับการเปลี่ยนสีในพรอมต์ของคุณคุณต้องใส่\[และ\]หลีกเลี่ยงเทอร์มินัลเพื่อหลีกเลี่ยงการทุบตีสามารถบอกได้ว่าพวกเขาไม่ใช้พื้นที่บนหน้าจอ - มิฉะนั้นมันจะคำนวณผิดที่คำสั่งจริง ผิดที่ ดูส่วนนี้จาก TLDP ใน zsh, ใส่%{และวน%}รอบ escape sequences


ฉันมีสีตามที่ระบุไว้อย่างแน่นอนฉันจะพยายามหลบหนีหรือลบออกและดูว่ามีประโยชน์หรือไม่ ขอบคุณ!
Jonatan

พิจารณาใช้โมดูลสีของ zsh มันควรหลีกเลี่ยงข้อผิดพลาดstackoverflow.com/questions/6159856/…
Francisco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.