บรรทัด OS X Terminal ไม่เข้าสู่ scrollback


12

ฉันมีปัญหาที่เพิ่มมากขึ้นเมื่อใช้ Terminal (TERM = xterm) ของ Mac OS X: บางครั้งมันจะเข้าสู่สถานะที่บรรทัดที่เลื่อนออกจากด้านบนไม่ได้ถูกเพิ่มลงในบัฟเฟอร์การเลื่อนกลับ ฉันไม่ได้ใช้screenหรือคล้ายกัน; นี่คือเปลือกทุบตีธรรมดาภายในแท็บเทอร์มินัล

ไม่สามารถทำได้ทันทีหลังจากเปิดแท็บใหม่ ฉันเชื่อว่ามันเป็นผลข้างเคียงของสิ่งที่ฉันเรียกใช้ในแท็บปัญหา ฉันเดาว่ามันมีบางอย่างเกี่ยวกับการจำลอง xterm ซึ่งอาจเป็นพื้นที่เลื่อน

สิ่งที่ไม่ได้ทำงาน:

  • ซอฟต์และฮาร์ดรีเซ็ตผ่านเมนู Shell
  • ทำงานresetในแท็บ

มีวิธีที่เชื่อถือได้ในการรีเซ็ต Terminal และ / หรือสถานะ xterm หรือไม่

ทุกคนสามารถให้คำอธิบายเกี่ยวกับสิ่งที่เกิดขึ้นแม้ว่าการแก้ไขเพียงอย่างเดียวคือการปิดแท็บและเปิดใหม่


คุณใช้ Mac OS X เวอร์ชั่นใด คุณมีบัฟเฟอร์ในบางสิ่งที่น้อยกว่า "ไม่ จำกัด " และบรรทัดที่คุณขาดหายไปเป็นเพียงบรรทัดที่เก่าที่สุดที่หลุดออกมาจากส่วนท้ายของบัฟเฟอร์หรือไม่?
Spiff

Mac OS X 10.6.2 และบัฟเฟอร์คือ 10,000 บรรทัดอย่างไรก็ตามบรรทัดที่หายไปนั้นเป็นเพียงการเลื่อนออกจากหน้าจอ ถ้าฉันเลื่อนหน้าจอหนึ่งหน้าจอบรรทัดเหล่านั้นจะไม่อยู่ที่นั่นและอันที่จริงแล้วเมื่อบรรทัดเลื่อนออกจากด้านบนหน้าล่าสุดของการเลื่อนกลับจะไม่เปลี่ยนแปลง
Steve Madsen

คำตอบ:


19

นี่หมายความว่าเทอร์มินัลกำลังใช้บัฟเฟอร์หน้าจอทางเลือก มีหน้าจอหลักซึ่งเลื่อนลงในบันทึกการเลื่อนกลับและหน้าจอทางเลือกที่ไม่มี โปรแกรม "เต็มหน้าจอ" หรือ "มุ่งเน้นที่หน้าจอ" เช่นด้านบน, น้อยกว่า, emacs, vim และหน้าจอสลับเทอร์มินัลเป็นหน้าจออื่นตามค่าเริ่มต้น

แต่ละหน้าจอมีเนื้อหาและสถานะของตัวเอง การมีหน้าจอทางเลือกช่วยให้โปรแกรมสามารถควบคุมการแสดงผลทั้งหมดจากนั้นเรียกคืนเนื้อหาก่อนหน้าเมื่อออกโดยสลับกลับไปที่หน้าจอหลัก

ในฐานะของ Mac OS X Lion 10.7 เทอร์มินัลมีรายการเมนูที่คุณสามารถใช้เพื่อสลับหน้าจอด้วยตนเอง:

ดู> แสดง / ซ่อนหน้าจอทางเลือก

สิ่งนี้มีไว้เพื่อให้คุณสามารถดูหรือคัดลอกข้อความจากหน้าจออื่นหลังจากออกจากโปรแกรม "เต็มหน้าจอ" Xterm มีคำสั่งที่คล้ายกัน

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

อาจมีอาร์กิวเมนต์บรรทัดคำสั่งหรือวิธีอื่นเพื่อกำหนดค่าให้ใช้หน้าจอหลักขึ้นอยู่กับโปรแกรม เช่นless -X.

บางรายการ terminfo xterm1ได้รับการออกแบบมาโดยเฉพาะเพื่อการปราบปรามการใช้หน้าจออื่นเช่น TERM=xterm1 emacsจะเรียกใช้ Emacs บนหน้าจอหลัก ฉันไม่แนะนำให้ใช้xterm1อย่างถาวรเพราะมันปิดการใช้งานคุณสมบัติที่มีประโยชน์อื่น ๆ อีกมากมายเมื่อเทียบกับค่าเริ่มต้นxterm-256colorบน Lion

คุณยังสามารถสลับหน้าจอโดยใช้tputคำสั่งเพื่อออก escape sequences จากภายในเชลล์หรือสคริปต์ tput smcupสลับไปที่หน้าจอทางเลือกและtput rmcupสลับกลับไปที่หน้าจอหลัก

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


1
ดูเหมือนว่าคำตอบที่ดีมาก คำอธิบายที่สมเหตุสมผลว่าโปรแกรมสามารถออกจากระบบอย่างผิดปกติหรือไม่และปล่อยให้หน้าจออื่นทำงานอยู่หรือไม่?
Steve Madsen

หากคุณกลับมาที่เชลล์หลังจากใช้งานโปรแกรม "เต็มหน้าจอ" ใช่ว่าเป็นไปได้แม้ว่าโปรแกรมที่ได้รับความนิยมส่วนใหญ่เช่นที่ฉันอยู่ในรายการมีความน่าเชื่อถือเกี่ยวกับการล้างข้อมูลด้วยตนเอง หากโปรแกรม "เต็มหน้าจอ" ขัดข้องอาจทำให้จอเทอร์มินัลปรากฏขึ้นบนหน้าจออื่น อย่างไรก็ตามคุณบอกว่าคุณลองใช้เชลล์> ส่งฮาร์ดรีเซ็ตซึ่งรวมถึงการสลับกลับไปที่หน้าจอหลัก ถ้ามันเกิดขึ้นอีกครั้งคุณอาจลองใช้คำสั่งนี้เพื่อเปลี่ยนกลับ:tput rmcup
คริสหน้า

ความเป็นไปได้อีกอย่างหนึ่งคือโปรแกรมออกจากเทอร์มินัลด้วย "ขอบเขตการเลื่อน" มีรหัสที่บอกให้เทอร์มินัลเลื่อนเฉพาะช่วงย่อยของบรรทัดเมื่อทำการเลื่อน โปรแกรมใช้เพื่อแสดงบรรทัดสถานะตัวอย่างเช่นที่ไม่ได้เลื่อนออกจากหน้าจอ หากพื้นที่เลื่อนไม่รวมบรรทัดบนสุดข้อความจะไม่เลื่อนลงในบันทึกการเลื่อนกลับ อย่างไรก็ตามอีกครั้งคุณบอกว่าคุณลองฮาร์ดรีเซ็ตซึ่งก็ควรจะล้างเช่นกัน
Chris หน้า

2
ในกรณีของฉันสิ่งที่ดูเหมือนจะเกิดขึ้นคือsshเซสชันของฉันไปยังเครื่องรีโมตล้มเหลว (หมดเวลา?) ในขณะที่ฉันอยู่viดูเหมือนว่าจะออกจากเทอร์มินัลในหน้าจอสำรอง (เพราะviไม่เคยมีโอกาสทำความสะอาด) หลังจากนั้นsshเซสชันใหม่ใด ๆในเครื่องเทอร์มินัลเดียวกันจะแสดงปัญหาที่อธิบายโดย OP จนกว่าฉันจะแก้ไขปัญหาได้โดยเลือกรายการเมนูมุมมอง> ซ่อนหน้าจอสำรอง
Hephaestus

ขอบคุณดู> แสดง / ซ่อนหน้าจอทางเลือกที่ช่วย มันมีการผสมผสานที่สำคัญซึ่งฉันจะต้องมีการกดปุ่มโดยไม่รู้ตัวและไม่รู้ว่าเกิดอะไรขึ้นหรือจะยกเลิกอย่างไร
aexl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.