แก้ไขข้อผิดพลาดในการแสดง bash line-wrapping & backspace ใน Mac OS X หรือไม่


14

เมื่อฉันเปิด Terminal (บน Mac OS X 10.5.8) และพิมพ์บรรทัดคำสั่งแบบยาว: ข้อความแสดงแทน

... ข้อความไม่ได้ไปที่บรรทัดถัดไปเมื่อมันล้อมรอบ: ข้อความแสดงแทน ข้อความแสดงแทน

นอกจากนี้บางครั้งเมื่อฉันพิมพ์คำสั่งแล้วจึงถอยกลับ (หรือลูกศรขึ้นหรือ ^ U): ข้อความแสดงแทน

... เส้นทั้งหมดไม่ถูกลบและฉันไม่สามารถย้อนกลับได้เกินจุดที่แน่นอน: ข้อความแสดงแทน ข้อความแสดงแทน

นี่เป็นข้อผิดพลาด bash ที่รู้จัก (บน Mac OS X) หรือไม่ มีวิธีแก้ไขไหม?

อัปเดต: Julianoถูกต้องปัญหาเกิดจากการลบลำดับรหัสคอนโซลในตัวแปร PS1 ของฉันไม่ถูกต้อง การเปลี่ยนแปลง:

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

... ในของฉัน.bashrcถึง:

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

... แก้ไขปัญหา


1
+1 สำหรับภาพหน้าจอที่สวยที่สุดของหน้าจอเทอร์มินัลที่ฉันเคยเห็น
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

1
บรรทัดโค้ดสองบรรทัดที่คุณแสดงในการอัพเดตของคุณเหมือนกัน
Magne

เยี่ยมมาก @Magne มันเป็นสี่ปีนับตั้งแต่ผมมองที่นี้ดังนั้นผมจำไม่เฉพาะ แต่ผมถือว่า "ก่อน" \]ได้รับการขาดหายไป
Daryl Spitzer

มันไม่เหมือนกัน: อันที่ 1 \]แทนที่ '[`
Ohad Cohen

คำตอบ:


19

พฤติกรรมนี้สอดคล้องกับการมีรหัสคอนโซลในพรอมต์ของคุณ (เพื่อเปลี่ยนสี ฯลฯ ) และไม่ทำเครื่องหมายอย่างถูกต้องเพื่อให้ทุบตีรู้ว่าพวกเขาจะมองไม่เห็น

ก่อนอื่นให้ทำสิ่งนี้:

PS1='\w\$ '

จากนั้นลองอีกครั้ง หากปัญหาได้รับการแก้ไขความสงสัยของฉันนั้นถูกต้อง

แต่ละลำดับรหัสคอนโซลจะต้องคั่นด้วย\[และ\]ในตัวแปร PS1 พวกเขาบอกว่าทุบตีสิ่งที่อยู่ในนั้นไม่ย้ายตำแหน่งเคอร์เซอร์ อ่านคู่มือทุบตีสำหรับข้อมูลเพิ่มเติม


นั่นคือปัญหา ขอขอบคุณ! ฉันจะอัปเดตคำถามของฉันพร้อมรายละเอียด
Daryl Spitzer

แล้วถ้ามันไม่แก้ปัญหาล่ะ
levesque

3

เพื่อช่วยสร้างพรอมต์ที่ถูกสุขลักษณะให้ลองhttp://www.kirsle.net/wizards/ps1.htmlมันยอดเยี่ยมมาก เพียงระวังด้วยเครื่องหมายวงเล็บในการแจ้งเตือนของคุณมันจะพยายามหลบหนีพวกเขาหรือบางสิ่งบางอย่าง


+1 ในขณะที่คำตอบของ @ Juliano นั้นถูกต้องทางเทคนิคลิงค์นี้คือสิ่งที่ตั้งค่าtputคำสั่งที่ถูกต้องซึ่งแก้ไขบรรทัดใหม่ `` ขึ้นบรรทัดใหม่และ "แก้ไขประวัติ + backspacing" อื่น ๆ ที่ใช้รหัส ANSI อื่นไม่สามารถแก้ไขได้
Eric Duncan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.