ทำไมเทอร์มินัลจะไม่แสดงบรรทัดใหม่


16

ตัวอย่างเช่นเมื่อฉันพิมพ์คำสั่งต่อไปนี้

echo line | (cat >/dev/null; vi)

แม้แต่ห่อไว้ในเปลือกอีกอัน

sh -c 'echo line | (cat >/dev/null; vi)'

และส่งคืนจาก Vim ตอนนี้จะไม่แสดงการขึ้นบรรทัดใหม่อีกต่อไป

ฉันจะทำให้แสดงบรรทัดใหม่อีกครั้งได้อย่างไร (โดยไม่ต้องออก)


หมายเหตุถึงการสลับไปใช้ emacs ที่จำเป็น :)
Dang Khoa

คำตอบ:


36

ลองหนึ่งหรือทั้งสองอย่างนี้:

  • ประเภทctrl+cแล้วพิมพ์จากนั้นกดปุ่มresetenter
  • ประเภทctrl+cแล้วพิมพ์จากนั้นกดปุ่มstty saneenter

ctrl+cคือการล้างตัวละครอื่น ๆ ที่คุณอาจจะพิมพ์ในบรรทัดคำสั่ง

resetหรือstty saneแก้ไขเทอร์มินัลที่ยุ่งเหยิง อ่าน man page ของresetและsttyสำหรับข้อมูลเพิ่มเติม

โปรดทราบว่าหากเทอร์มินัลมีความผิดปกติเพียงพออาจเป็นไปได้ว่าจะไม่ทำงานctrl+cหรือenterจะทำงานได้ตามปกติ ยังมีวิธีอื่นในการป้อนอักขระ แต่พวกเขาเกี่ยวข้องกับเวทมนตร์มืดโบราณ ในกรณีนั้นมักจะง่ายกว่าที่จะปิดเครื่องและเริ่มต้นเครื่องใหม่

ความเข้าใจของฉันเกี่ยวกับการทำงานภายในของเครื่องเทอร์มินัลไม่ลึกพอที่จะอธิบายได้ว่าทำไมหรืออย่างไร


4

มันไม่ได้มีไว้สำหรับใช้viเพื่อรับอินพุตจาก stdin

อย่างไรก็ตามคุณสามารถรับบรรทัดใหม่ได้อีกด้วย

stty sane

โดยไม่ต้องรีเซ็ตเครื่อง

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